|
|
1
3
使用XSLT将大型XML文件转换为本地域模型,该模型通过JAXB映射到java objets。 从JDK 5+内置的XML库开始(除非您绝对需要XSLT 2.0,在这种情况下使用Saxon) 不要关注SAX/DOM的相对性能,要关注如何编写XPath表达式和使用XSLT,然后在发现性能有问题时才考虑性能问题。 EclipseXML编辑器很不错,但是如果您负担得起的话,可以使用SpringforOxygenXML,它可以让您实时地进行XPath评估。 |
|
|
2
2
我们也遇到过类似的情况,我只是拼凑了一些XPath代码来解析我需要的东西。 即使在100k多个XML文件上,它的速度也惊人地快。我们尽可能低技术含量。我们每天处理大约1000个这样大小的文件,解析时间非常短。我们没有内存问题、漏洞等。 我们用Groovy编写了一个快速的原型(如果我的内存是准确的话)-概念验证花了我大约10分钟 |
|
|
3
2
JAXB ,用于XML绑定的Java API可能就是您想要的。您可以使用它将XML文档膨胀成由“Java内容对象”组成的Java对象图。这些内容对象是JAXB生成的与XML文档的模式匹配的类的实例 但是,如果您已经有一组Java类,或者还没有文档的模式,那么JAXB可能不是最好的方法。我建议先进行SAX解析,然后在解析期间构建Java对象。或者,您可以尝试DOM解析,然后遍历生成的文档树来提取感兴趣的部分(可能使用XPath),但在Java中,5MB的XML可能会变成50MB的DOM树对象。 |
|
|
4
1
DOM、SAX和XSLT是不同的动物。 DOM解析将整个文档加载到内存中,10万到5兆字节(按今天的标准来说非常小)就可以了。 SAX是一个流解析器,它读取XML并为每个标记向代码传递事件。 XSLT是一个将一个XML树转换为另一个XML树的系统。即使您编写了一个转换,将输入转换为更合适的格式,您仍然需要使用DOM或SAX编写一些东西来将其转换为Java对象。 |
|
|
5
1
您可以在 EclipseLink JAXB (MOXy) 以便于处理这个用例。有关详细示例,请参见: 示例代码:
|
|
Sweepy Dodo · JSON lite的格式化 1 年前 |
|
|
giantjenga · 优化整数向量到二进制向量的转换 1 年前 |
|
Zegarek · Postgresql递归查询未提供预期结果 1 年前 |
|
|
Joe · 为什么这两个查询之间的性能存在如此大的差异? 2 年前 |
|
tic-toc-choc · 在`dplyr中高效使用列表进行过滤` 2 年前 |