java - JAXB - 如何使用 MOXy XPath 提取属性值?

标签 java jaxb moxy

这是我的 XML 片段。我正在使用 MOXy JAXB 扩展来使用 XPath 直接访问我感兴趣的值。

<GSP>
  <RES>
    <R N="1">
        <PageMap>
            <DataObject type="group">
                <Attribute name="name" value="some name"/>
                <Attribute name="location" value="Miami, FL"/>
            </DataObject>
            <DataObject type="organization">
                <Attribute name="name" value="ABC Corp"/>
            </DataObject>
        </PageMap>
    </R>
    <R N="2">
        <PageMap>
            <DataObject type="group">
                <Attribute name="name" value="new name"/>
                <Attribute name="location" value="Boise, ID"/>
            </DataObject>
            <DataObject type="organization">
                <Attribute name="name" value="IBM Corp"/>
            </DataObject>
        </PageMap>
    </R>
  </RES>
</GSP>

我有以下映射。第一个有效,但接下来的两个无效。

   @XmlPath("PageMap/DataObject[@type='group']/Attribute[@name='location']")
   Attribute groupLocation;

   @XmlPath("PageMap/DataObject[@type='group']/Attribute[@name='name']")
   @XmlAttribute(name="value")
   String groupName;

   @XmlPath("PageMap/DataObject[@type='organization']/Attribute[@name='name']")
   @XmlAttribute(name="value")
   String organization;

对于第一个,我的 Attribute 对象的名称和类型都有 @XmlAttribute。 我希望能够只获取值,而不是检查对象是否为 null(在属性的情况下)然后获取值。

我在这里做错了什么?

最佳答案

我能够弄清楚自己。我不得不使用/@value。这是正确的代码。

@XmlPath("PageMap/DataObject[@type='group']/Attribute[@name='name']/@value")
String groupName;

@XmlPath("PageMap/DataObject[@type='organization']/Attribute[@name='name']/@value")
@XmlAttribute(name="value")
String organization;

关于java - JAXB - 如何使用 MOXy XPath 提取属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23303596/

相关文章:

java - 为 MOXy JSON 编码重命名元素名称

java - 无法通过 JSON 按类别查找 liferay 文章

java - JAXB:如何避免 xmlns:xsi 的重复命名空间定义

java.lang.NoSuchMethodException : JAXB Unmarshalling Interfaces

xml - Java/Jersey/JAXB/MOXy - 序列化给定基类对象的派生成员

java-8 - 如何将 Java 8 可选与 Moxy 和 Jersey 一起使用

java - Hibernate EntityListeners - PrePersist 方法在持久调用之前修改模型 - 如果持久调用失败怎么办?

java - bean 的 Autowiring 问题

java - com.thoughtworks.xstream.mapper.CannotResolveClassException

java - 如何通过 xsdtojava 在自动生成的 jaxb 元素上添加接口(interface)?