使用JAXB从xml中的列表中读取k元素使用JAXB

问题描述:

我需要使用JAXB从xml读取k元素,但找不到解决方案。有人有想法吗?我的XML文件是这样的:使用JAXB从xml中的列表中读取k元素使用JAXB

<supplier> 
    <material> 
     <materialId>0-MAT-1-LIC</materialId> 
     <name>Material 1</name> 
     <quantity>100</quantity> 
    </material> 
    <material> 
     <materialId>1-MAT-1-LIC</materialId> 
     <name>Material 2</name> 
     <quantity>123</quantity> 
    </material> 
    <material> 
     <materialId>3-MAT-1-LIC</materialId> 
     <name>Material 3</name> 
     <quantity>1343</quantity> 
    </material> 
    <material> 
     <materialId>4-MAT-1-LIC</materialId> 
     <name>Material 4</name> 
     <quantity>1323</quantity> 
    </material> 
    <material> 
     <materialId>5-MAT-1-LIC</materialId> 
     <name>Material 5</name> 
     <quantity>1234</quantity> 
    </material> 
    <material> 
     <materialId>6-MAT-1-LIC</materialId> 
     <name>Material 6</name> 
     <quantity>12</quantity> 
    </material> 
</supplier> 

我可以将XML映射到Java对象,但我需要例如仅4元,而不是孔列表。先谢谢你!

+0

难道你只是遍历材质对象列表并检索第四个元素?我假设你已经有一个List 对象。 –

如果您已经将xml映射到java对象,则应该有一个List材质。您可以在该列表上调用.get(index)。例如。如果你想得到第四个元素,并且列表的对象名称是materialList,代码将如下所示:materialList.get(3);索引3将为您提供列表中的第四个元素。

但是,如果您只需要使用第4个元素,则不需要将整个xml转换为java对象。你可以使用xpath。给定样本xml的Xpath获取第四个材质将是(/supplier/material)[4]

+0

我不想在java中获得整个列表。我有超过1000个条目进入xml,所以它会效率低下。 – Maria

+0

我完全同意。为此,您可以使用Xpath。更新了答案 –