使用VB6和XSLT转换大型XML文件

时间:2016-12-07 05:41:43

标签: xml vb6 xslt-1.0

我有一个大约300mb的大型XML文件,当我尝试使用XSLT进行转换时,它总是会出现内存不足的错误,任何人都可以为我推荐一个好的解决方案,以便能够成功转换XML文件错误。

我正在使用VB6并使用XSLT 1.0转换XML,并使用DOMDocument加载XML文档。

2 个答案:

答案 0 :(得分:1)

您在这里使用了一些非常古老的技术,并且从您的问题中不清楚您是否永远受到该环境的限制。

使用现代XSLT处理器(如Saxon)可以使用300Mb,它可能需要2Gb的内存。许多XSLT处理器都有一个比DOM更节省空间的内部树模型,但我不知道你对MSXML的立场。

我们对您正在进行的转换以及它是否适合流式处理(即不在内存中构建整个树模型的处理)一无所知。如果它有潜在的可流性,那么您可以考虑各种方法(包括XSLT 3.0),但您在VB6中的选择可能非常有限。

答案 1 :(得分:0)

正如Bob77指出的那样,您应该明确切换到SAXXMLReader并使用这种轻量级技术重写XSLT转换。

创建一个类模块并包含语句Implements IVBSAXContentHandler

使用事件IVBSAXContentHandler_startElementIVBSAXContentHandler_endElement动态执行 所需的更改,因为文件在读取时正在被解析。

您可以在MSDN上找到足够的即用型SAX类示例。