这是我目前的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
答案 0 :(得分:0)
您遇到问题,因为sub
不是文档的根元素。所以,当你做的时候
xDoc.Element("sub").Add(root);
然后xDoc.Element("sub")
返回null
。然后,当您尝试调用方法Add
时,您拥有NullReferenceException
。
我认为您需要向sub
元素添加新的sublist
元素:
xDoc.Root.Element("sublist").Add(root);
我还建议改进命名。如果您要创建元素sub
,请调用varibale sub
,而不是将其命名为root
(这非常令人困惑)。 E.g。
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);