2012-06-22 186 views
4

我創建了一個解組我的xml(item.xml)文件的方法。但是如果有多個元素,我如何迭代所有元素並顯示它們? 我的代碼如下: final JAXBContext jc = JAXBContext.newInstance(「com.generated」);遍歷JAXB中的元素

 final Unmarshaller u = jc.createUnmarshaller(); 

     final File f = new File("D:\\item.xml"); 

     final JAXBElement element = (JAXBElement) u.unmarshal(f); 

     final Item item = (Item) element.getValue(); 

     // This will be helpful only if the xml contains one element 
     System.out.println(item.getCode()); 
     System.out.println(item.getName()); 
     System.out.println(item.getPrice()); 

如果我的XML是

 <item> 
     <item1> 
     <code>12000</code> 
     <name>Samsung Galaxy Tab 620</name> 
     <price>9999</price> 
     </item1> 
    <item2> 
     <code>15000</code> 
     <name>NOKIA</name> 
     <price>19999</price> 
    </item2> 
    <item3> 
     <code>18000</code> 
     <name>HTC 620</name> 
     <price>29999</price> 
    </item3> 
</item>    How can i get all the vaues displayed?Can anyone help me? 

回答

6

我在大學中使用JAXB的一些項目。 據我記得,你應該返回一個對象,如ItemList,然後查詢該對象以檢索包含的元素。

所以,你的XML應該以某種方式出現這樣的:

<itemlist> 
    <item> 
    <code>..</code> 
    <name>..</name> 
    <price>..</price> 
    </item> 
    <item> 
    <code>..</code> 
    <name>..</name> 
    <price>..</price> 
    </item> 
    . 
    . 
</itemlist> 

在這一點上,你的Java代碼將是:

final Unmarshaller u = jc.createUnmarshaller(); 
final File f = new File("D:\\item.xml"); 
final JAXBElement element = (JAXBElement) u.unmarshal(f); 
final ItemList itemList = (ItemList) element.getValue(); 

// This will be helpful if the xml contains more elements 
for (Item item : itemList.getItems()) { 
    System.out.println(item.getCode()); 
    System.out.println(item.getName()); 
    System.out.println(item.getPrice()); 
} 
+0

而如果沒有像根'itemlist' –

-1
I had the same question, but what if we have xml like below: 

<itemlist> 
    <item> 
    <code>..</code> 
    <name>..</name> 
    <price>..</price> 
    </item> 
    <item> 
    <code>..</code> 
    <name>..</name> 
    <price>..</price> 
    <item> 
    <code>..</code> 
    <name>..</name> 
    <price>..</price> 
    <item> 
     <code>..</code> 
     <name>..</name> 
     <price>..</price> 
    </item> 
     <item> 
    <code>..</code> 
    <name>..</name> 
    <price>..</price> 
    </item> 
    </item> 
    </item> 
    . 
    . 
</itemlist>