编辑XML文件?

时间:2009-08-04 20:50:29

标签: c# .net 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,创建一个新元素标签,添加属性并结束元素标签;它删除文本文件中的所有先前数据:/

2 个答案:

答案 0 :(得分: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 的组合。

答案 1 :(得分:0)

我会沿着这些方向做点什么:

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

其中mediaElement是对&lt; media /&gt;的引用。 element和xmlDocument属于XmlDocument类型。