2012-11-26 131 views
0

我使用XMLWriter來創建一個基本的XML,XML文件有一個元素,一切都在,爲了解釋它可以說這只是people然後裏面需要它裏面的多個元素,讓我們叫他們person然後在他們裏面我們有元素叫names多個XML元素互相覆蓋

所以它看起來像這樣

<?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

如果你想嘗試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); 
+0

有什麼辦法可以用XML編寫器做到嗎? – FabianCook

+0

或者你認爲這將是最好的方式? – FabianCook

+0

@SmartLemon最好?很難定義*最佳*。更輕鬆?是。 –

1

由L.B提供的答案是我會親自用什麼。至於xml編寫器,我不確定這是否可行,但值得一試。嘗試以追加模式創建文件流。

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