2011-10-27 26 views
2

私のXMLはこれです:はXMLで一度に複数のノードを追加する

<Settings> 
    <Ss></Ss> 
    <Properties> 
     <Property> 
      <Name>x</Name> 
      <Description>xx</Description> 
     </Property> 
      <Property> 
      <Name>y</Name> 
      <Description>yyyyy</Description> 
      </Property> 
    </Properties> 
</Settings> 

は、私は、プロパティのXElementの息子として追加します。これは私のコードです:

XDocument xmlDoc1 = XDocument.Load(@"C:\Users\John\Desktop\FileXml.xml"); 
xmlDoc1.Element("Properties").Add(new XElement(addManyNodes)); 

しかし、それは動作しません。 null参照例外がスローされます。どうして?

答えて

2

XDocumentのルートが<Settings>で、ルート自体が<Properties>ではないため、Element("Properties")からnullの値が得られます。

XDocument.RootまたはElementまたはDescendantsへの一連のコールを使用してドリルダウンする必要があります。

<!-- xmlDoc1 --> 
<Settings> <!-- .Root or .Element("Settings") --> 
    <Ss></Ss> <!-- .Root.Element("Ss") or .Element("Settings").Element("Ss") --> 
    <Properties> <!-- .Root.Element("Properties") --> 
     <Property> <!-- .Root.Element("Properties").Element("Property") --> 

最後の注意点を、addManyNodesがすでに配列の場合:

xmlDoc1.Root.Element("Properties").Add(addManyNodes); 

あなたが作ったら、それを見て

// simplest 
xmlDoc1.Root.Element("Properties").Add(new XElement(addManyNodes)); 

// using a chain of Element calls 
xmlDoc1.Element("Settings").Element("Properties").Add(...); 

別の方法:ここではいくつかのオプションがあります。あなたの変更、you should save it to the file

xmlDoc1.Save(...); 
+0

それは働いた:) しかし、xmlファイルに追加されません。 –

+0

変更を行っているときに複数のノードを追加してドキュメントを保存する方法について、いくつかの追加情報を追加しました。 – user7116

+0

OMGありがとう、本当に助けてくれました:) –

関連する問題