2009-08-04 106 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