java - JAXB/MOXy : How to set which xpath impl to use?

标签 java xpath jaxb implementation moxy

我使用 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/

相关文章:

xpath - 使用XSLT从XHTML删除评论

PHP DOM Xpath 获取图像

java - 在 JAVA 中使用 XPath 解析具有不同命名空间的 xml

java - Redis是否只允许字符串表示而不允许数值

JavaFX 操作两个 FXML 中的标签

Java - 转换 yyyy-MM-dd'T'HH :mm:ssZ to readable dd-MM-yyyy

java - 系统架构

java - 代码风格: change lots of similar overloads

java - 加入 SAAJ 和 JAXB

java - JAXB Ant Task - 从哪里获得 JAR?