我的 xml 是这样的:
<Settings>
<Ss></Ss>
<Properties>
<Property>
<Name>x</Name>
<Description>xx</Description>
</Property>
<Property>
<Name>y</Name>
<Description>yyyyy</Description>
</Property>
</Properties>
</Settings>
我想添加一个 XElement 作为 Properties 的子元素。这是我的代码:
XDocument xmlDoc1 = XDocument.Load(@"C:\Users\John\Desktop\FileXml.xml");
xmlDoc1.Element("Properties").Add(new XElement(addManyNodes));
但它不起作用。它抛出空引用异常。为什么?
最佳答案
因为 XDocument 的根是 <Settings>
并且根本身不是 <Properties>
你得到一个null
来自 Element("Properties")
的值.
您需要使用 XDocument.Root
向下钻取或对 Element
的一系列调用或 Descendants
.这里有几个选项:
// simplest
xmlDoc1.Root.Element("Properties").Add(new XElement(addManyNodes));
// using a chain of Element calls
xmlDoc1.Element("Settings").Element("Properties").Add(...);
另一种看待它的方式:
<!-- xmlDoc1 -->
<Settings> <!-- .Root or .Element("Settings") -->
<Ss></Ss> <!-- .Root.Element("Ss") or .Element("Settings").Element("Ss") -->
<Properties> <!-- .Root.Element("Properties") -->
<Property> <!-- .Root.Element("Properties").Element("Property") -->
最后一点,如果addManyNodes
已经是一个数组:
xmlDoc1.Root.Element("Properties").Add(addManyNodes);
完成更改后,you should save it to the file :
xmlDoc1.Save(...);
关于c# - 在xml中一次添加多个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7917424/