【问题标题】:JAXB - how to extract attribute value using MOXy XPath?JAXB - 如何使用 MOXy XPath 提取属性值?
【发布时间】:2014-04-25 21:46:49
【问题描述】:

这是我的 XML 的 sn-p。我正在使用 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】:

    我能够弄清楚自己。我不得不使用/@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;
    

    【讨论】:

    • 那是从你的代码中直接复制粘贴,暗示第二个属性上的虚假@XmlAttribute 没有伤害吗?
    猜你喜欢
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多