我使用 MOXy 的 @XmlPath("/foo/bar[@baz]")
.
在应用程序的其他地方,我需要 XSLT 2.0,因此我在类路径中包含了 Saxon HA 9.5。 但这导致 XPath 失败(找不到节点,与 JDK 的实现不同)。
如何为 MOXy 设置要使用的 XML/XPath impl?
目前我使用jaxb.properties
在 JAXB bean 旁边 .class
,但我可以使用一些工厂选项等创建编码器。
额外问题:我认为 XPath 的问题在于 XML 文件使用命名空间 <deployment xmlns="urn:jboss:bean-deployer:2.0"> ...
如何让 Saxon 忽略 XPath 中的 namespace ? (无需重写 XPath 表达式)。
最佳答案
EclipseLink JAXB (MOXy)的 @XmlPath
注释支持 XPath 规范的子集。 XPath 处理由 MOXy 本身完成。支持以下概念:
- 属性 -
@id
- 元素 -
地址
- 按位置排列的元素 -
地址[1]
- 按谓词的元素 -
address[@type='mailing']
- 元素文本 -
name/text()
- 文本 -
text()
- self -
.
- 组合 -
个人信息/姓名[2]/text()
对于命名空间限定的节点,@XmlNs
注释中定义的前缀可用于限定 XPath 片段。不合格的片段将假定位于使用 @XmlSchema
指定的命名空间中。
关于java - JAXB/MOXy : How to set which xpath impl to use?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17048227/