目前我正在使用XmlWriter,并想询问如何在现有的XML文件中编写,例如:
A.XML
<info>
<description>Test3</description>
<loops>100</loops>
</info>
添加<Info>
,例如
<name>Test1</name>
<name>
的位置不起任何作用,但如果它是在</info>
之前编写的话,那将是最好的,因此是最后一个元素。
<info>
<description>Test3</description>
<loops>100</loops>
<name>Test1</name>
</info>
或:
<info>
<name>Test1</name>
<description>Test3</description>
<loops>100</loops>
</info>
答案 0 :(得分:3)
XmlWriter
类很快,但只能逐个元素地向一个方向书写。如果要编辑现有XML,最简单的方法是使用LINQ to XML:
var doc = XDocument.Parse(xml); // or XDocument.Load(xmlFilePath)
doc.Root.Add(new XElement("name", "Test1"));
doc.Save(xmlFilePath);
答案 1 :(得分:1)
我不建议您使用XmlReader和Writer,但是如果您要问...我猜您只需要读取您的xml然后重新编写它,但是使用新节点。例如
XmlDocument d = new XmlDocument();
d.Load("c:/a.xml");
XmlNode root = d.FirstChild;
if(root.HasChildNodes)
{
using(XmlWriter writer = new XmlTextWriter("c:/a.xml", Encoding.Default))
{
writer.WriteStartDocument();
writer.WriteStartElement(root.Name);
foreach(XmlNode node in root.ChildNodes)
{
writer.WriteStartElement(node.Name);
writer.WriteValue(node.InnerText);
writer.WriteEndElement();
// writing new node after "loop" node
if (node.Name == "loop")
{
writer.WriteStartElement("name");
writer.WriteValue("test1");
writer.WriteEndElement();
}
}
writer.WriteEndElement();
writer.WriteEndDocument();
}
}