多个XML元素互相覆盖

时间:2012-11-26 20:47:07

标签: c# xml

我正在使用XMLWriter创建一个基本的XML,XML文件有一个元素,所有内容都在,为了解释它可以说这只是people然后内部需要要成为其中的多个元素,让我们调用它们person然后在它们内部我们有称为names的元素。

所以它看起来像这样

<?xml version="1.0" encoding="utf-8"?>
<people>
  <person>
    <name>Name1</name>
  </person>
  <person>
    <name>Name2</name>
  </person>
  <person>
    <name>Name3</name>
  </person>
</people>

但是当我去写一个新的person时,它会像这样出来(它只是覆盖它):

<?xml version="1.0" encoding="utf-8"?>
<people>
  <person>
    <name>Name5</name>
  </person>
</people>

我用它来编写每个person元素......

writer.WriteStartElement("person");
writer.WriteElementString(keys[i], values[i]);
writer.WriteEndElement();

任何阻止覆盖的方法?

2 个答案:

答案 0 :(得分:2)

如果您想尝试LinqToXml

var xDoc = XDocument.Load(fileName);

var people = xDoc.Element("people");
people.Add(new XElement("person", new XElement("name", "name4")));

xDoc.Save(fileName, SaveOptions.None);

答案 1 :(得分:1)

L.B提供的答案是我个人使用的。关于xml编写器,我不确定这是否可行,但值得一试。尝试以追加模式创建文件流。

Stream xmlFile = new FileStream(@"c:\path",FileMode.Append);
XmlTextWriter xmlWriter = new XmlTextWriter(xmlFile, Encoding.Default);