4

xml (item.xml) ファイルをアンマーシャリングするメソッドを作成しましたが、複数の要素がある場合、すべての要素を反復処理して表示するにはどうすればよいですか?

私のコードは次のとおりです。

        final JAXBContext jc = JAXBContext.newInstance("com.generated");

        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>

表示されているすべての値を取得するにはどうすればよいですか? 誰でも私を助けることができますか?

4

1 に答える 1

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());
}
于 2012-06-22T08:55:57.160 に答える