设置XML叶子节点的值

时间:2016-01-14 20:13:47

标签: c# .net xml

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

<location>
    <city>Denver</city>
    <state>CO</state>
    <country>United States</country>
</location>
  • 当我设置上面的城市,州和国家的值时,应该 我正在使用InnerText或InnerXml?
  • 如果我需要,答案会改变吗? 用XML编码5个XML非法字符('“&lt;&gt;&amp;) System.Security.SecurityElement.Escape()?
  • 如果节点的值包含在CDATA标记中,则执行此操作 改变我是否使用InnerText或InnerXml?

2 个答案:

答案 0 :(得分:1)

正如评论中所建议的,如果可以,您应该使用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>

您可以看到this fiddle的工作演示。

答案 1 :(得分:0)

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