1
5
SAX或STAX API将是您最好的选择。他们不会一次分析整个事件,他们一次只分析一个节点,让你的应用程序处理它。它们适用于任意大的文档。 SAX是较旧的API,在推模型上工作,STAX是较新的,是一个pull解析器,因此更容易使用,但是对于您的需求,任何一个都可以。 见 this tutorial 为了让您开始分析stax。 |
2
2
您可以使用类似 StAX 为此。这不需要您一次读取内存中的整个文件。 |
3
1
|
4
1
用 SAX 您不必拆分文件:它是流式传输的,所以它只在内存中保存当前的位。编写只进行计数的ContentHandler非常容易。而且速度非常快(根据我的经验,几乎和简单地读取文件一样快)。 |
5
1
根据这个描述,我会说是的,你使用它的逻辑是错误的。你的记忆力太强了。 与其解析整个文件,将所有节点值存储到某个对象中,然后处理结果,不如在命中每个节点时对其进行处理,并在解析时输出。 有了更多关于您实际尝试完成什么、输入XML和输出什么样的细节,我们可能会帮助简化。 |
7
0
我认为拆分文件不是一种方法。您最好将XML文件作为流处理,并使用SAX API(而不是DOM API)。 更好的是,您应该使用XQuery来处理您的请求。 SAXON是一个很好的Java/.NET实现(使用SAX),这是惊人的快,甚至在大文件上。版本他在MPL开源许可证下。 下面是一个小例子:
|
8
0
使用扩展的VTD XML,您可以高效地在内存中加载文档,因为它支持内存映射。与DOM相比,内存使用不会以数量级激增。您将能够非常容易地使用xpath来计算节点的数量。 |
JobProcessTask · 如何读取此xpath表达式? 2 年前 |
MBF · PHP导入/解析XML文件内容保存到数据库 2 年前 |
TenkMan · SQL Server XML嵌套值查询表单990 2 年前 |
Mohan.Murali.Peddini · XSLT模板循环记录 2 年前 |