当前位置: 首页 > 面试题库 >

遍历JAXB中的元素

施知
2023-03-14
问题内容

我创建了一种方法来解组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>

如何获取所有显示的值?谁能帮我?


问题答案:

我在大学的一些项目中使用过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());
}


 类似资料:
  • 对于元素间的空格,IE9 及之前版本不会返回文本节点,而其他所有浏览器都会返回文本节点。这样,就导致了在使用childNodes 和firstChild 等属性时的行为不一致。为了弥补这一差异,而同时又保持DOM规范不变,Element Traversal 规范(www.w3.org/TR/ElementTraversal/)新定义了一组属性。 Element Traversal API 为DOM

  • 问题内容: 我想做一个Java游戏。首先,程序要求玩家的数量。之后,它询问他们的名字。我将他们的名字放在ID和分数中。在游戏结束时,我会计算分数,然后将其放在(特定名称的特定分数)中。有谁知道如何做到这一点?这是我的代码: 玩家: 主要: 有谁知道我最后如何打印,例如: 更新: 我主要是这样做的(正如Jigar Joshi建议的那样) 当我将球员的两个名字“ a”和“ b”放进去时,它会显示“分数

  • 问题内容: 我是一个selenium菜鸟,一直在努力用python完成事情。我试图从此页面迭代所有用户评论(“ partial_entry”类)https://www.tripadvisor.com/Airline_Review-d8729164-Reviews- Cheap-Flights-or560-TAP- Portugal#REVIEWS 即使Im每次都在for循环中选择一个不同的元素,但

  • 本文向大家介绍如何遍历PHP中的DOM元素?,包括了如何遍历PHP中的DOM元素?的使用技巧和注意事项,需要的朋友参考一下 以下是XML数据(输入)- 遍历DOM对象中的元素。 示例 输出结果 这将产生以下输出- 通过在XML文件中的所有节点上运行foreach循环,可以获取XML文件中的元素。在foreach循环内,将引用主节点的子节点,并且可以访问该子节点的子值。

  • 问题内容: 我已经用BeautifulSoup做到了,但是有点麻烦,我想弄清楚是否可以直接用Selenium做到。 假设我有以下HTML,这些HTML在页面源中使用相同的元素但内容不同重复多次: 我需要建立一个字典,每个人的条目如下: 通过执行以下操作,我可以轻松地让Selenium生成每个顶级元素的内容列表: 但是,我无法遍历列表,因为上述方法无法将范围/源范围缩小到该元素的内容。 如果我尝试执

  • 问题内容: 我已经用BeautifulSoup做到了,但是有点麻烦,我想弄清楚是否可以直接用Selenium做到。 假设我有以下HTML,这些HTML在页面源中使用相同的元素但内容不同重复多次: 我需要建立一个字典,每个人的条目如下: 通过执行以下操作,我可以轻松地让Selenium生成每个顶级元素的内容列表: 但是,我无法遍历列表,因为上述方法不会将范围/源范围缩小到该元素的内容。 如果我尝试做