您可以使用 XmlTextWriter。
只需打开文件进行写入,返回到结束元素的开头,然后使用 XmlTextWriter 附加您想要的任何新元素。要关闭文件,只需为 end 元素编写原始文本以使文档完整,然后您就完成了。
这是一个快速而肮脏的例子。
像这样从 XML 开始:
<?xml version="1.0" encoding="utf-8"?>
<DocumentElement>
<FirstElem/>
</DocumentElement>
您可以打开它并附加这样的元素:
using (FileStream f = new FileStream(@"D:\a.xml", FileMode.OpenOrCreate, FileAccess.Write))
{
f.Seek(-("</DocumentElement>\n".Length), SeekOrigin.End);
using (XmlTextWriter x = new XmlTextWriter(f, Encoding.UTF8))
{
x.WriteStartElement("Another");
x.WriteAttributeString("attr", "value");
x.WriteEndElement();
// Close the file with a new terminating end-element
x.WriteRaw("\r\n</DocumentElement>\r\n");
}
}
结果是:
<?xml version="1.0" encoding="utf-8"?>
<DocumentElement>
<FirstElem/>
<Another attr="value" />
</DocumentElement>
您可能无法获得完美的缩进等,但它是有效的 XML。如果将 xml 作为原始文本写入文件,这正是您要做的 - 但您也可以利用 XML 编写器为您进行格式化。
我也同意一些评论 - 为您的 xml 使用最小化大小的模式将非常有益。关闭缩进。尽可能使用最短的元素和属性名称。如果您正在处理叶子元素,将数据存储为属性而不是 cdata 将节省空间(<element>data</element>
比它更昂贵,<element val="data"/>
并且可以进一步压缩到<e v="data"/>
- 几乎是原始大小的一半)