写入现有的xml文件而不替换它的内容(XmlWriter)

时间:2014-05-16 15:51:49

标签: c# xml winforms visual-studio xmlwriter

我遇到了以下问题,

我首先写入我的xml文件,如下所示:

 XmlTextWriter writer = new XmlTextWriter("course.xml", null);
 writer.Formatting = Formatting.Indented;
 writer.WriteStartDocument();

 writer.WriteStartElement("Course");
 writer.WriteAttributeString("title", "Examle");
 writer.WriteAttributeString("started", "true");

 writer.WriteEndElement();
 writer.WriteEndDocument();
 writer.Close();

我得到的xml输出是:

<?xml version="1.0"?>
<Course title="Example" started="true" />

之后我想写更多数据到这个xml文件,所以我再次使用我的代码:

XmlTextWriter writer = new XmlTextWriter("course.xml", null);
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument();

writer.WriteStartElement("Course");
       writer.StartElement("Level");
              writer.StartElement("Module");
              writer.EndElement();
       writer.EndElement();
writer.WriteEndElement();

writer.WriteEndDocument();
writer.Close();

xml输出为:

<?xml version="1.0"?>
<Course>
    <Level>
        <Module>
        </Module>
    </Level>
</Course>

因此它取代了原始数据和课程标签中的所有属性。因此,我需要一种不替换数据的方法,而是将其添加到现有标记内。

2 个答案:

答案 0 :(得分:2)

XML文件只是顺序文本文件。它们不是数据库或随机访问文件。没有办法只写入它们的中间。

答案 1 :(得分:0)

我建议将整个xml文档解析到内存中,添加新数据,然后再将整个文档写回来。