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

问题描述 投票:3回答:1

这是我的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(如果是属性)然后获取值。

我在这做错了什么?

java jaxb moxy
1个回答
3
投票

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

@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;
© www.soinside.com 2019 - 2024. All rights reserved.