2014-04-25 51 views
3

這是我的XML片段。我正在使用MOXy JAXB擴展來使用XPath直接訪問我感興趣的值。JAXB - 如何使用MOXy 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; 

}

在第一種情況下,我的屬性對象有@XmlAttribute兩個名稱和類型。 我希望能夠獲得值,而不是檢查對象爲null(屬性的情況下),然後獲取值。

我在這裏做錯了什麼?

回答

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; 
+0

是從你的代碼直接複製粘貼,暗示第二個屬性上的虛假'@ XmlAttribute'不會傷害? –