设置 XML 叶节点的值

本文关键字:叶节点 XML 设置 | 更新日期: 2023-09-27 18:30:37

在 C# 中创建 XML 文档。 对于叶节点,我需要设置文本/值,如下所示:

<location>
    <city>Denver</city>
    <state>CO</state>
    <country>United States</country>
</location>
  • 当我在上面设置城市、州和国家/地区的值时,应该我正在使用InnerText还是InnerXml?
  • 如果我需要,答案会改变吗对 5 个 XML 非法字符 (' " <> &) 进行 XML 编码System.Security.SecurityElement.Escape()?
  • 如果节点的值包装在 CDATA 标记中,则执行更改我是使用InnerText还是InnerXml?

设置 XML 叶节点的值

如注释中所建议的,如果可以的话,您应该使用 LINQ to XML。 下面是一些示例代码 - 任何 XML 编码都会自动处理。

var doc = XDocument.Parse(xml);
doc.Root.Element("city").Value = "London";
doc.Root.Element("state").Value = "Some value with & <> in";
doc.Root.Element("country").ReplaceNodes(new XCData("Some CDATA content with & <>"));

这将为您提供以下输出:

<location>
  <city>London</city>
  <state>Some value with &amp; &lt;&gt; in</state>
  <country><![CDATA[Some CDATA content with & <>]]></country>
</location>

您可以看到这个小提琴用于工作演示。

谢谢你们的回答。 我想我应该重新构建我的问题,因为我要求更多的最佳实践而不是实际做这项工作。 我想我从阅读MSDN中得到了答案。 我应该使用InnerText,因为不建议InnerXml进行写入操作。 此外,InnerText 将转义任何 XML 非法字符,而 InnerXml 需要有效的 XML。