当前位置: 首页 > 知识库问答 >
问题:

JAXB/MOXY:如何设置要使用哪个xpath impl?

淳于新
2023-03-14

我使用了Moxy的@XMLPath(“/foo/bar[@baz]”)

在应用程序的其他地方,我需要XSLT2.0,所以我在类路径中包含了Saxon HA9.5。但这导致了XPath失败(找不到节点,与JDK的实现不同)。

如何为MOXy设置要使用哪个XML/XPath impl?

目前,我在JAXB bean的.class旁边使用JAXB.properties,但我可以使用一些工厂选项或类似的方式创建封送器。

附加问题:我认为XPath的问题是XML文件使用了名称空间, ...
我如何使Saxon忽略XPath中的名称空间?(不重写XPath表达式)。

共有1个答案

督弘化
2023-03-14

EclipseLink JAXB(MOXy)的@xmlpath注释支持XPath规范的一个子集。XPath处理由MOXy自己完成。支持以下概念:

  • 属性-@id
  • 元素-地址
  • 元素(按位置-地址[1]
  • 元素(按谓词)-地址[@type='mailing']
  • 元素文本-名称/Text()
  • 文本-文本()
  • 组合-个人信息/名称[2]/text()

对于命名空间限定的节点,可以使用@xmlns注释中定义的前缀限定XPath片段。将假定非限定片段位于使用@xmlschema指定的命名空间中。

  • http://blog.bdoughan.com/2010/09/xpath-based-mapping-geocode-example.html
 类似资料:
  • 现在我有了这堂课: 并且我有: 如果运行此代码,将得到: 我该怎么解决这个? 我搜索了SO和Google,这些答案都不起作用: 使用Eclipselink.media-type值设置封送器属性时的PropertyException:Application/JSON JAXB javax.xml.bind.PropertyException

  • 我注释了setIntTag(String),但Jaxb marchaller调用setIntTag(Integer)并将Integer传递给它,如果我删除setIntTag(Integer),marchaller调用字符串setter。 如何注释这些方法以保留两个setter,并告诉编组程序使用字符串setter?

  • 我的数据有一个ATOM-XML表示,通过Spring MVC web服务返回。我使用JAXB进行序列化,我有许多名称空间,但我希望默认名称空间设置为Atom,不带前缀。下面是我到目前为止在中的内容,但是atom前缀被设置为NS3。 另外,我注意到chrome中显示的名称空间,而Firefox中没有。

  • 问题内容: 为了使用Moxy作为JAXB实现,必须在具有应用程序域类的文件夹中添加一个名为jaxb.properties的文件,并包括以下行 是否可以将moxy设置为项目的默认值?如果我有许多带有带注释的域类的文件夹,我应该把这个文件放在哪个文件夹中? 问题答案: 注意: 我是 EclipseLink JAXB(MOXy)的 负责人,并且是 JAXB(JSR-222) 专家组的成员。 MOXy已经

  • 问题内容: 我有两节课: 我想将类B编组为xml元素,并添加类A的属性fieldOfClassB和fieldOfClassA,但在编组期间会显示以下警告消息: 请注意,这两个类来自两个不同的程序包,我无法更改此对象模型。 先感谢您! 编辑: 我正在使用外部绑定文件。 问题答案: 从您发布的日志消息中,我可以看到您正在使用MOXy的外部映射文档(请参阅http://blog.bdoughan.com

  • 在不使用getter和setter的情况下,JAXB可以正确地解组所提供的JSON。 null和“null”是完全不同的东西,但是我不想在POJO中包含这个字段,并且我必须忽略这些null值。 编辑