我一直在SO学习XML。我尝试使用XDocument
在里面添加一个节点。
我的XML看起来像这样
<root>
<parent>
</parent>
</root>
预期的XML应该像
<root>
<parent>
<course>ABC</course>
<credit>555</credit>
</parent>
</root>
我写了这段代码来实现
XDocument xml = XDocument.Load("root.xml");
XElement root = xml.Root.Element("root");
root.Element("parent").Add(new XElement("course", "ABC"));
但是在第3行,它给出了
对象引用未设置为对象的实例。
任何人都可以帮忙解释一下吗?
答案 0 :(得分:3)
XDocument.Root
是文档中的根元素,在您的情况下是“root”。
因此
xml.Root.Element("root");
正在寻找根元素的子元素“root”,即:
<root>
<root>
...
这不存在,因此您的空引用。
试试这个:
xml.Root.Element("parent").Add(new XElement("course", "ABC"));
答案 1 :(得分:1)
这有效:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument xml = XDocument.Load(FILENAME);
XElement parent = xml.Descendants("parent").FirstOrDefault();
parent.Add(new object[] {
new XElement("course", "ABC"),
new XElement("credit",555)
});
}
}
}