我的需求是创建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文件。我会用一个新的流代替。 –