编辑:GitHub 上提供了我的(不完整且非常粗糙的)XmlLite 标头翻译
在不使用 DOM 的情况下,将 Delphi 中的大量 XML 文档与 MSXML 进行简单组合的最佳方法是什么?我应该使用 COM 组件 SAXReader 和 XMLWriter 吗?有什么好的例子吗?
转换是从许多大文件 (60MB+) 到一个大文件 (~1GB) 的所有内容元素从根(容器)的简单组合。
<Container>
<Contents />
<Contents />
<Contents />
</Container>
我使用 XmlWriter 和 XmlReaders 在以下 C# 代码中工作,但它需要在本机 Delphi 进程中发生:
var files = new string[] { @"c:\bigFile1.xml", @"c:\bigFile2.xml", @"c:\bigFile3.xml", @"c:\bigFile4.xml", @"c:\bigFile5.xml", @"c:\bigFile6.xml" };
using (var writer = XmlWriter.Create(@"c:\HugeOutput.xml", new XmlWriterSettings{ Indent = true }))
{
writer.WriteStartElement("Container");
foreach (var inputFile in files)
using (var reader = XmlReader.Create(inputFile))
{
reader.MoveToContent();
while (reader.Read())
if (reader.IsStartElement("Contents"))
writer.WriteNode(reader, true);
}
writer.WriteEndElement(); //End the Container element
}
我们已经在系统的其他部分使用了 MSXML DOM,如果可能的话,我不想添加新组件。