繁体   English   中英

使用 C# 在现有 XML 中添加元素

[英]Adding Elements in an existing XML using C#

我正在尝试使用 XDocument 将元素添加到现有的 XML 文档中。 我收到 null 引用异常,因为它没有找到我想要的元素 append。

这是代码:

     XDocument doc = XDocument.Load(@"C:\Documents\Test.xml");
     XElement root = new XElement("SystemMonitor");
     doc.Element("DewesoftSetup").Add(root);
   
     doc.Save(@"C:\Documents\Test.xml");

这是 XML:

<?xml version="1.0" encoding="utf-8"?>
<DewesoftXML>
  <System Name="Local">
    <SysInfo>
    </SysInfo>
    <DewesoftSetup>
    </DewesoftSetup>
 </System>
</DewesoftXML>

我正在尝试向 DewesoftSetup 添加一个子元素。

这是错误:

System.Xml.Linq.XContainer.Element(...) returned null.

Element方法查找直接子元素。 在您的情况下,您正在寻找DewesoftSetup ,它位于System下,它本身位于DewesoftXML (这是根元素)下。 这里有两个选项:

首先,您可以使用Element两次 - 一次是从根目录到System ,然后再次从SystemDewesoftSetup

doc.Root.Element("System").Element("DewesoftSetup").Add(root);

或者,您可以使用Descendants查找所有名为DewesoftSetup后代,然后只取其中的第一个:

doc.Descendants("DewesoftSetup").First().Add(root);

我个人会使用第一种方法,但如果元素可以出现在多个不同的地方,则第二种方法会很有用。

顺便说一句,我会更改root变量的名称,因为这听起来像是您希望它是根元素,但事实并非如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM