编辑: 我(不完整且非常粗糙的)XmlLite头文件翻译可在GitHub上找到。
在Delphi中,使用MSXML而不使用DOM,最好的方法来简单合并大量的XML文档是什么?我应该使用COM组件SAXReader和XMLWriter吗?是否有任何好的例子可以参考?
转换是从许多大文件(60MB+)的根(容器)的所有内容元素简单组合成一个巨大的文件(~1GB)。
<Container>
<Contents />
<Contents />
<Contents />
</Container>
我已经在以下的C#代码中使用XmlWriter和XmlReaders使其工作,但是它需要在本地的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,如果可能的话我不想添加新组件。