2017-11-11 27 views
0

私はここでXMLを研究しています。私はXDocumentを使って内部にノードを追加しようとしました。ノードに子が追加されていないXML C#

私のXMLは、この

<root> 
    <parent> 

    </parent> 
</root> 

のように見え、XMLは私が

XDocument xml = XDocument.Load("root.xml"); 
XElement root = xml.Root.Element("root"); 
root.Element("parent").Add(new XElement("course", "ABC")); 

を達成するために、このコードを書いたしかし、3行目で、それは

を与える

<root> 
    <parent> 
    <course>ABC</course> 
    <credit>555</credit> 
    </parent> 
</root> 

ようにする必要があり期待

オブジェクト参照がオブジェクトのインスタンスに設定されていません。

説明を助けることができますか?

答えて

3

XDocument.Rootは、文書内のルート要素です(「ルート」の場合)。

したがって

xml.Root.Element("root"); 

はすなわち、あなたのルート要素の子要素 ​​"ルート" を探しています:

<root> 
    <root> 
    ... 

これはあなたのnull参照したがって、存在しません。

これを試してみてください:

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) 
      }); 
     } 
    } 
} 
関連する問題