我有一个高达1-2gb的巨大XML文件,显然我不能一次解析整个文件,我必须将它分成几部分然后解析部分并对它们做任何事情.
我如何计算某个节点的数量?所以我可以跟踪分割文件需要多少部分.有没有更好的方法来做到这一点?我对所有建议持开放态度,谢谢
问题更新:
好吧,我确实使用了STAX,也许我使用它的逻辑是错误的,我正在解析文件,然后对于每个节点我得到节点值并将其存储在字符串构建器中.然后在另一种方法中,我通过stringbuilder并编辑输出.然后我将该输出写入文件.我不能做这样的10000个对象.
这是我得到的例外:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at com.sun.org.apache.xerces.internal.util.NamespaceSupport.<init>(Unkno
wn Source)
at com.sun.xml.internal.stream.events.XMLEventAllocatorImpl.setNamespace
Context(Unknown Source)
at com.sun.xml.internal.stream.events.XMLEventAllocatorImpl.getXMLEvent(
Unknown Source)
at com.sun.xml.internal.stream.events.XMLEventAllocatorImpl.allocate(Unk
nown Source)
at com.sun.xml.internal.stream.XMLEventReaderImpl.nextEvent(Unknown Sour
ce)
at com.sun.org.apache.xalan.internal.xsltc.trax.StAXEvent2SAX.bridge(Unk
nown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.StAXEvent2SAX.parse(Unkn
own Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transfor
mIdentity(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transfor
m(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transfor
m(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
实际上我认为我的整个方法都是错误的,我实际上正在尝试将xml文件转换为CSV样本.到目前为止我是这样做的:
| 归档时间: |
|
| 查看次数: |
1854 次 |
| 最近记录: |