2017-11-11 89 views
0

我一直在這裏研究XML在SO。我試着用XDocument在裏面添加一個節點。孩子不在節點XML C追加#

我的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號線它給

未將對象引用設置爲對象的實例。

任何一個可以幫助解釋嗎?

回答

3

XDocument.Root是您的文檔中的根元素,在您的情況下是「root」。

因此

xml.Root.Element("root"); 

正在尋找您的根元素的子元素的 「根」,即:

<root> 
    <root> 
    ... 

這不存在,因此您的空引用。

試試這個:

xml.Root.Element("parent").Add(new XElement("course", "ABC")); 
+0

這是不添加任何。 – Alen

+0

現在工作!我的錯。謝謝 – Alen

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