【问题标题】:How to add a string as a node to a new XmlDocument?如何将字符串作为节点添加到新的 XmlDocument?
【发布时间】:2015-06-30 18:03:06
【问题描述】:

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

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

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

newRevNumber 只是当前日期时间的 MD5 哈希。

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

另外,我会选择 XDocument,但我对 LINQ to XML 不够熟悉,无法获得结果。

【问题讨论】:

  • 您可能想查看我的答案 [此处][1]。 [1]:stackoverflow.com/a/29833123/858003
  • 顺便说一句,你使用XmlDocument吗?如果您可以使用 LINQ to XML(XDocument 等),生活会以各种方式变得更好......

标签: c# xmldocument


【解决方案1】:

另外,我会选择 XDocument,但我对 LINQ to XML 不够熟悉,无法获得结果。

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 介绍了如何做到这一点。

【讨论】:

    【解决方案2】:

    试试这个

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2011-02-15
      • 2017-03-13
      • 1970-01-01
      相关资源
      最近更新 更多