如何将字符串作为节点添加到新的 XmlDocument 中?

How to add a string as a node to a new XmlDocument?

对于这个非常基本的问题深表歉意,但我正在尝试将动态生成的字符串添加到新的 XmlDocument 中。

我最初尝试了下面的代码,但不确定是否有更好的方法。

var summaryXml = new XmlDocument();
    summaryXml.InnerXml.Replace("", "<Summary rev=\"" + newRevNumber + "\"></Summary>");

newRevNumber 只是当前日期时间的 MD5 散列值。

我有一组 XML 个已经有数据的节点,在我将上面列出的字符串作为第一个子节点插入后,我试图将它们追加到这个新 XmlDocument 的末尾。

此外,我本来会使用 XDocument,但我对 LINQ 不够熟悉,无法 XML 实现结果。

试试这个

var summaryXml = new XmlDocument();
var summaryElement = summaryXml.CreateElement("Summary");
var revAttribute = summaryXml.CreateAttribute("rev");
revAttribute.Value = newRevNumber;
summaryElement.Attributes.Append(revAttribute);
summaryXml.AppendChild(summaryElement);

Also, I would have just gone with XDocument, but I'm not familiar enough with LINQ to XML to achieve results.

LINQ to XML 超级简单,与 XmlDocument 的非常冗长的 API 相比非常轻量级。

您可以像这样以 XDocument 形式获取所需的 XML 文档:

XDocument summaryXml = new XDocument(
    new XElement("Summary",
        new XAttribute("rev", newRevNumber)
    )
);

生成与以下 XmlDocument 用法相同的文档:

XmlDocument summaryXml = new XmlDocument();
XmlElement summary = summaryXml.CreateElement("Summary");
XmlAttribute rev = summaryXml.CreateAttribute("rev");
rev.Value = newRevNumber;
summary.Attributes.Append(rev);
summaryXml.AppendChild(summary);

如您所见,XDocument 好多了……;)

如果您需要 XmlDocument,您随时可以根据需要在两种格式之间进行转换。 This question 介绍了如何做到这一点。