編輯:這是我如何加載XML文檔,因爲我在Blaise的答案中使用它。我像這樣加載它,因爲我想使用節點,而不是整個文檔。即使使用整個文檔,我仍然在以這種方式加載時遇到麻煩。使用MOXy和XPath,是否可以解組一個屬性列表?
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
factory.setNamespaceAware(false);
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("[path to doc]/input.xml");
TestClass testClass = (TestClass) unmarshaller.unmarshal(doc);
我有XML,看起來像這樣:
<test>
<items>
<item type="cookie">cookie</item>
<item type="crackers">crackers</item>
</items>
</test>
和A類:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "test")
public class TestClass
{
@XmlPath("items/item/text()")
@XmlElement
private ArrayList<String> itemList = new ArrayList<String>();
// getters, setters omitted
}
上面的代碼將作品是否我有@XmlElement
,我得到一個包含[cookie,crackers]的ArrayList。
如果我改變上面
@XmlPath("items/item/@type")
@XmlElement
private ArrayList<String> itemList = new ArrayList<String>();
我的ArrayList是空的聲明。
我的最終目標是隻是有屬性,所以我的XML看起來像這樣:
<test>
<items>
<item type="cookie"/>
<item type="crackers"/>
</items>
</test>
是我想要做的,拉出來使用XPath,可能的屬性列表,如果是這樣, 怎麼樣?
謝謝。
你舉的例子不工作如圖所示,但是當我用我如何加載文檔合併(見我的問題我做了修改),那麼我的輸出是這樣的:'2.3.0.v20110604-r9504 <?XML版本=「1.0」編碼=「UTF-8」> '我需要最終與節點工作 - 我應該如何加載文檔,所以我可以拉出一個節點並通過Moxy/JAXB運行? –
Paul
我做了更多的測試,試圖從每個項目中拉出值和屬性。我可以得到的價值,但不是屬性仍然。 – Paul
最後一個測試...如果餘添加屬性的項目,'<項目類型=「blarg」>',我可以檢索它就好,例如'@XmlPath(「items/@ type」)',而不是'item'。 – Paul