将新数据从数据表插入到 xml 中



我有一个大约 900MB 的 xml 文件,我想将数据从数据表插入到现有的 xml 中。

有一种方法可以通过使用加载和保存来做到这一点,如下所示;

XDocument xdoc = XDocument.Load(FilePath);
var root = xdoc.Descendants("DocumentElement").FirstOrDefault()
if (root != null){
root.Add(new XElement("tag", "value"));
xdoc.Save(FilePath);
}

但是,它的成本太高了。将 900MB xml 加载到数据表中可能会导致内存异常和几个新行的性能不佳。

如何从数据表向现有的大 xml 添加新行?

XDocument(以及XmlDocument(将整个文件加载到内存中。您应该将 XmlWriter 与 XNode.WriteTo 方法结合使用

XNode.WriteTo文档中的示例:

StringBuilder sb = new StringBuilder();
XmlWriterSettings xws = new XmlWriterSettings();
xws.OmitXmlDeclaration = true;
xws.Indent = true;
using (XmlWriter xw = XmlWriter.Create(sb, xws)) 
{
XElement child2 = new XElement("AnotherChild",
new XElement("GrandChild", "different content"));
child2.WriteTo(xw);
xw.WriteEndElement();
}
Console.WriteLine(sb.ToString());

你可以用同样的方式阅读大型xml文档,请查看XNode.ReadFrom文档中的示例。

最新更新