java – MOXy @XmlPath表达式,它们是否受支持?

MOXy中是否支持以下XPath表达式?

field[XMLtag!='identifier']

基本上我有这样的XML

<demographics>
  <field>
    <value>12345</value>
    <XMLtag>identifier</XMLtag>
  </field>
  <field>
    <value>somename</value>
    <XMLtag>name</XMLtag>
  </field>
</demographics>

我正在尝试使用List填充但排除用于标识符的字段.

这将工作,但给我列表中的所有字段元素(2)(正确)

@XmlElement( name = "field" )
public List<Field2> fieldList;

这不会,我得到一个空列表

@XmlPath( "field[XMLtag!='identifier']" )
public List<Field2> fieldList;

如果上述工作,或MOXy不支持的表达式?我似乎无法找到有关它们的任何信息.

我没有包含我的Field2类,因为它很简单,显然工作正常,因为如果使用@XmlElement注释我可以解组列表.如果您愿意,请告诉我.

最佳答案
EclipseLink JAXB (MOXy)的@XmlPath注释支持XPath规范的子集. XPath处理由MOXy本身完成.支持以下概念:

>属性 – @id
>元素 – 地址
>按位置排列的元素 – 地址[1]
>谓词元素 – 地址[@ type =’mailing’]
>元素文本 – 名称/文本()
>文字 – 文字()
>自我 – .
>组合 – 个人信息/姓名[2] /文字()

对于名称空间限定节点,@ xmlNs注释中定义的前缀可用于限定XPath片段.假定未限定的片段位于使用@XmlSchema指定的命名空间中.

> http://blog.bdoughan.com/2010/09/xpath-based-mapping-geocode-example.html

点赞