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

时间:2014-11-17 12:31:55

标签: java xml xpath moxy

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以填充但不包括用于标识符的字段。

这会有用,但会在List(正确)

中提供所有字段元素(2)
@XmlElement( name = "field" )
public List<Field2> fieldList;

这不会,我得到一个空的List

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

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

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

1 个答案:

答案 0 :(得分:2)

EclipseLink JAXB (MOXy)&#39; @XmlPath注释支持XPath规范的子集。 XPath处理由MOXy本身完成。支持以下概念:

  • 属性 - @id
  • 元素 - address
  • 按位置排列的元素 - address[1]
  • 谓词元素 - address[@type='mailing']
  • 元素文字 - name/text()
  • 文字 - text()
  • 自我 - .
  • 组合 - personal-info/name[2]/text()

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