【发布时间】:2018-06-18 05:57:05
【问题描述】:
我们想升级我们的项目以使用一些最新的依赖项。目前我们使用 jaxb 进行 XML 读写。效果很好。
在某些情况下,我们没有 xsd 或 dtd 来生成 java 类(通过 xjc)。在这些情况下,我们使用 dom4j 创建 xml 文档或使用带有 xpath 的 dom4j 来读取 xml 文档。
1.6.1 版本已经十多年了,据我了解,dom4j 需要 jaxen 作为 X-Path 库。 Jaxen 1.1.6 也是 4 岁。我们还从我们的项目中删除了 xerces 2.40(也是 12 岁)。
目前最先进的 XML API 是什么?它应该支持 XPATH 表达式并且应该创建和读取 xml 文档。
我也想知道 xerces。当我们使用 JAXB 读取 xml 文档时,有时我们有一个对象值而不是字符串、日期或其他东西。
原因是有人弄乱了 xsd 并忘记为某些元素定义数据类型。 XJC 在生成的 java 类中创建简单的对象属性。奇怪的是,我需要将对象转换为“ElementNSImpl”对象。这个对象来自 xerces 项目。
我有点困惑。我们删除 xerces 的解决方案是使用适当的数据类型定义每个元素。不幸的是,这些 XSD 是第三方 XSD,我们必须在每次 XSD 更改时修复它。但是为什么我必须在 ElementNSImpl 中转换对象呢?
感谢您的帮助。
【问题讨论】:
-
我的首选选项是 JDOM2 或 XOM,但您没有给出令人信服的迁移理由来证明成本和中断是合理的。如果您想要一个更现代的 XPath 引擎,Saxon 可以使用 DOM、JDOM2、DOM4J、XOM 和 Axiom,以及它自己的内部树模型。