在c#中使用XDocument向xml文件添加元素

本文关键字:xml 文件 添加 元素 XDocument | 更新日期: 2023-09-27 18:06:05

这是我当前的XML结构

<root>
<sublist>
    <sub a="test" b="test" c="test"></sub>
  </sublist>
</root>

我使用以下c#,但当我试图执行

时得到错误
 public static void writeSub(string a,string b,string c)
        {
            XDocument xDoc = XDocument.Load(sourceFile);
            XElement root = new XElement("sub");
            root.Add(new XAttribute("a", a), new XAttribute("b", b),
                         new XAttribute("c", c));
            xDoc.Element("sub").Add(root);
            xDoc.Save(sourceFile);
        }

我哪里说错了?

error is

nullreferenceexception was unhandled

在c#中使用XDocument向xml文件添加元素

您有问题,因为sub不是文档的根元素。所以,当你输入

xDoc.Element("sub").Add(root);

xDoc.Element("sub")返回null。然后当你尝试调用Add方法时,你有NullReferenceException

我认为你需要添加新的sub元素到sublist元素:

xDoc.Root.Element("sublist").Add(root);

我还建议改进命名。如果要创建元素sub,则调用变量sub,而不是将其命名为root(这非常令人困惑)。例如

XDocument xdoc = XDocument.Load(sourceFile);
var sub = new XElement("sub", 
               new XAttribute("a", a), 
               new XAttribute("b", b),
               new XAttribute("c", c));
xdoc.Root.Element("sublist").Add(sub);
xdoc.Save(sourceFile);