【发布时间】:2017-03-07 18:30:37
【问题描述】:
我需要一些帮助注册。解析xml 文件。目前,我们正在使用 JAXB 将 XML 文件解组为 Java POJOs。我们使用'xjc'从xsd创建了映射器POJOs,它从一开始就没有改变。但我们预测xml 的结构会经常发生变化。因此,我们正在考虑寻找JAXB 以外的选项,因为每当xml 架构发生更改时,我们都无法创建映射器POJOs。我们尝试了一些解析器,如DOM、SAX,但性能不如JAXB。
我们正在寻找,
- 动态处理不同结构的xml文件,无需预定义/创建Java映射器类
- 架构验证是可选的。即使模式验证失败,我们也希望将数据解析并持久化到可能的扩展范围
- 需要处理巨大的文件。
DOMParser在处理这些文件时遇到了性能问题
【问题讨论】:
-
jaxb 在下面使用诸如 dom 或 sax(或者可能是 stax)之类的解析器,所以我希望 jaxb 至少比 sax 的 sax 慢。
-
@MeBigFatGuy 好的。性能问题可能在我的自定义
event handlers和SAXParser上。我在那里使用reflectionapi 来生成动态对象。 -
确保使用缓冲流/阅读器
-
JAXB 的速度出奇地快,因为它必须做的事情,但如果架构频繁更改,这是一个糟糕的解决方案,这是对的。在通用对象模型(DOM、JDOM、DOM4J、AXIOM 等)中,我最喜欢的是 XOM。
-
请不要使用“巨大”之类的词。对于某些人来说,巨大意味着 100Mb,而对于其他人来说,这意味着 100Gb。我们是工程师,我们喜欢数字。
标签: java xml xml-parsing jaxb