子节点没有附加在节点XML C#中

时间:2017-11-11 13:48:28

标签: c# xml

我一直在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行,它给出了

  

对象引用未设置为对象的实例。

任何人都可以帮忙解释一下吗?

2 个答案:

答案 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)
            });
        }
    }
}