1

这是我当前的 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);
        }

我在哪里弄错了?

错误是

nullreferenceexception was unhandled
4

1 回答 1

0

你有问题,因为sub不是文档的根元素。所以,当你这样做

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

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

我认为您需要向元素添加新sub元素sublist

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

我也建议改进命名。如果您正在创建 element sub,则调用 varibalesub而不是命名它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);
于 2014-06-01T19:35:06.117 回答