2009-02-13 54 views
0

我已經將XmlDocument加載到內存中並創建了新的XmlElement。現在我正試圖將XmlElement添加到路徑/ report/section/hosts,但我不知道如何。我可以很容易地將它添加到XML的根節點下面,但我無法弄清楚如何在XML中導航更深層次,然後將其添加到那裏。在僞我試圖做到這一點:如何在XML中導航更深並在其中追加數據

doc.SelectNodes(「/ report/section/hosts」)。AppendChild(subRoot);

代碼:

 XmlDocument doc = new XmlDocument(); 

     doc.Load("c:\\data.xml"); 

     //host 
     XmlElement subRoot = doc.CreateElement("host"); 

     //Name 
     XmlElement ElName = doc.CreateElement("name"); 
     XmlText TxtName = doc.CreateTextNode("text text"); 
     ElName.AppendChild(TxtName); 
     subRoot.AppendChild(ElName); 
     doc.DocumentElement.AppendChild(subRoot); 

     doc.Save("c:\\data.xml"); 

回答

2

嘗試的SelectSingleNode代替的SelectNodes

XmlElement parent = (XmlElement)doc.SelectSingleNode("/report/section/hosts") 
parent.AppendChild(subRoot); 
1

的SelectNodes方法返回節點列表。 您應該使用SelectSingleNode來代替...

例如, (我的頭頂,在Visual Studio中沒有測試)

doc.SelectSingleNode("/report/section/hosts").AppendChild(subRoot); 
0

你需要讓你的文檔到的XmlElement參考(根以外)追加到。 XmlDocument上有a number of methods可用,如GetElementByIdSelectSingleNode,它們以不同方式爲您提供這種服務,以研究品味。

也就是說,在這個領域的整個API通常被認爲有點痛苦,你有沒有LINQ可用?

1

你快到了。請嘗試使用SelectSingleNode代替:

XmlNode node = doc.SelectSingleNode("/report/section/hosts"); 
node.AppendChild(subRoot);