我的需求是創建xml文件並將xml元素添加到現有的xml文件。單個xml文件中的兩個xml聲明錯誤
首先,我嘗試通過以下代碼創建新的xml文件。
using (XmlWriter xmlWriter = XmlWriter.Create(fStream, xmlSettings))
{
xmlWriter.WriteStartDocument(true);
xmlWriter.WriteStartElement("Friends");
xmlWriter.WriteStartElement("Friend");
xmlWriter.WriteElementString("Name", "Safiq");
xmlWriter.WriteElementString("Like", "Char");
xmlWriter.WriteElementString("Unlike", "anger");
xmlWriter.WriteElementString("Nickname", "good");
xmlWriter.WriteElementString("Gift", "c#");
xmlWriter.WriteEndElement();
xmlWriter.WriteEndElement();
xmlWriter.WriteEndDocument();
xmlWriter.Flush();
}
接下來我嘗試向現有文件添加新元素。
XDocument XDOC = XDocument.Load(fStream);
XElement x = new XElement("Friend");
x.Add(new XElement("Name", "Safiq"));
x.Add(new XElement("Like", "Char"));
x.Add(new XElement("Unlike", "anger"));
x.Add(new XElement("Nickname", "good"));
x.Add(new XElement("Gift", "c#"));
XDOC.Descendants("Friends").Single().Add(x);
XDOC.Save(fStream);
但我得到以下輸出。
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Friends>
<Friend>
<Name>Safiq</Name>
<Like>Char</Like>
<Unlike>anger</Unlike>
<Nickname>good</Nickname>
<Gift>c#</Gift>
</Friend>
</Friends>
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Friends>
<Friend>
<Name>Safiq</Name>
<Like>Char</Like>
<Unlike>anger</Unlike>
<Nickname>good</Nickname>
<Gift>c#</Gift>
</Friend>
<Friend>
<Name>Safiq</Name>
<Like>Char</Like>
<Unlike>anger</Unlike>
<Nickname>good</Nickname>
<Gift>c#</Gift>
</Friend>
</Friends>
哪裏錯了?
非常感謝。這節省了我的時間。 –
如果我添加stream.position = 0;?我會得到任何未來的錯誤? –
@Shafiq:如果你總是添加數據,則不行。但是,如果您更改代碼以刪除數據,則最終會由於剩餘數據而導致無效的XML文件。我會用一個新的流代替。 –