請注意,這不是我詢問的另一個問題的重複,「With MOXy and XPath, is it possible to unmarshal a list of attributes?」它是相似的,但不一樣。使用MOXy和XPath,是否可以解組兩個屬性列表?
我有XML,看起來像這樣:
<test>
<items>
<item type="cookie" brand="oreo">cookie</item>
<item type="crackers" brand="ritz">crackers</item>
</items>
</test>
這類似於我先前討論的XML除了現在有每個項目,而不是一兩個屬性。
在我的課:
@XmlPath("items/item/@type")
@XmlAttribute
private ArrayList<String> itemList = new ArrayList<String>();
@XmlPath("items/item/@brand")
@XmlAttribute
private ArrayList<String> brandList = new ArrayList<String>();
感謝回答我剛纔的問題我可以給type
屬性解組到列表中。然而,brandList
是空的。如果我註釋掉註釋itemList
(所以它不是由JAXB/MOXy填充),那麼brandList
包含正確的值。
看來我只能使用XPath將單個屬性解組到列表中。這是由設計還是我配置了錯誤的東西?
更新:看來我不能解組文本和元素的屬性。如果我的類映射是這樣的:
@XmlPath("items/item/text()")
@XmlElement
private ArrayList<String> itemList = new ArrayList<String>();
@XmlPath("items/item/@brand")
@XmlAttribute
private ArrayList<String> brandList = new ArrayList<String>();
brandList
也是在這種情況下是空的。如果我切換訂單並先映射brandList
,則itemList
爲空。就好像第一個映射消耗元素,所以基於該元素或其屬性的更多值不能被讀取。
你有最新版本的Moxy嗎?我遇到了一些使用舊版本(在更新到最新版本時消失)的XPath屬性過濾錯誤。 – Thilo
我有幾個星期前下載的EclipseLink 2.3。根據他們的下載頁面,v2.3似乎是最新的。 – Paul
該配置目前不會給你你正在尋找的輸出。我會盡量把你可以使用的替代方案放在一起。注意:我是EclipseLink JAXB(MOXy)的領導者。 –