2009-08-04 111 views
1

如何將另一個元素/ childnode添加到XML文件中的特定父節點?編輯XML文件?

具體到媒體節點的新視頻對象。 我希望把這個:

<?xml version="1.0" encoding="utf-8" ?> 
<media> 
    <Video name="Gladiator"> 
     <English>path1</English> 
     <Chinese>path2</Cinese> 
     <French>path3</French> 
    </Video> 
    <Video name="Transformers"> 
     <English>path4</English> 
     <Chinese>path5</Cinese> 
     <French>path6</French> 
    </Video> 
</media> 

到這一點:

<?xml version="1.0" encoding="utf-8" ?> 
<media> 
    <Video name="Gladiator"> 
     <English>path1</English> 
     <Chinese>path2</Cinese> 
     <French>path3</French> 
    </Video> 
    <Video name="Transformers"> 
     <English>path4</English> 
     <Chinese>path5</Cinese> 
     <French>path6</French> 
    </Video> 
    <Video name="Terminator"> 
     <English>path7</English> 
     <Chinese>path8</Cinese> 
     <French>path9</French> 
    </Video> 
</media> 

如果我打開一個XmlTextWriter,創建一個新的元素標籤,添加屬性和結束元素標籤;它會刪除所有以前的數據在文本文件:/

回答

3

如果您使用的類別爲XmlTextWriter,則需要在使用XmlTextWriter之前先閱讀您的xml文件以獲取內容。 XmlTextWriter不會加載您的xml文件的內容。這就是爲什麼你以前的所有數據都沒有了。

XmlDocument是添加新節點的最簡單方法。

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.Load(filePath); 

XmlNode node = FindYourNode(xmlDoc); //Method to find the specific node 
node.AppendChild(yourNewXmlNode); 

xmlDoc.Save(filePath); 

如果您的XML文件很小,類的XmlDocument是完全沒有問題。但是如果你必須操作一個大的XML文件,我會建議使用另一個類,因爲XmlDocument可能會傷害你的性能。

在這種情況下,我會用的XmlReader的XmlWriter的組合。

+0

很好的解釋,+1 – 2009-08-04 21:17:48

0

我會沿着這些路線做一些事情:

mediaElement.AppendChild(xmlDocument.CreateElement("Video")) 

哪裏的MediaElement是對<媒體/ >元素的引用和XmlDocument的是類型的XmlDocument的。

+0

認爲沒有先決條件已知,TS甚至不知道他爲什麼會從文件中刪除數據,他應該如何創建「mediaElement」作爲參考標籤。因此-1 – 2009-08-04 21:17:03