我使用名为Height.xml
的JAXB创建了一个XML文件。结构如下所示。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<heightList>
<measurement id="5">
<height>4'4"</height>
</measurement>
<measurement id="4">
<height>4'3"</height>
</measurement>
<measurement id="3">
<height>4'2"</height>
</measurement>
<measurement id="2">
<height>4'1"</height>
</measurement>
<measurement id="1">
<height>4'0"</height>
</measurement>
</heightList>
可以将此XML文件解组为List<Height>
,如下所示。
JAXBContext jaxb=JAXBContext.newInstance(HeightList.class);
File file=new File("Height.xml");
List<Height> heightList = ((HeightList) jaxb.createUnmarshaller().unmarshal(file)).getList();
是否可以根据其属性id
获取XML元素,以便只提取List<Height>
类型的Height
而不是id
? public final class Height implements Serializable
{
private Integer id;
private String height;
private static final long serialVersionUID = 1L;
public Height() {}
@XmlAttribute(name = "id")
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getHeight() {
return height;
}
public void setHeight(String height) {
this.height = height;
}
}
属性是唯一的。
相关课程:
高度:
@XmlRootElement(name = "heightList")
@XmlAccessorType(XmlAccessType.PROPERTY)
public final class HeightList implements Serializable
{
@XmlElement(name="measurement")
private List<Height>list;
private static final long serialVersionUID = 1L;
public HeightList() {}
public HeightList(List<Height> list) {
this.list = list;
}
public List<Height> getList() {
return list;
}
}
HeightList:
{{1}}
答案 0 :(得分:1)
您有一个List heightList,您可以从文档/对象树中检索,而无需任何额外开销 - 它是该树的一部分。部分解组没有完成。
使用特定ID值找到高度:
Height getById( List<Height> list, Integer id ){
for( Height h: list ){
if( h.getId().equals(id) ) return h;
}
return null;
}
可能值得考虑像XSLT这样的东西将XML文档缩减为包含单个<mesurement>
并解组的文档。
除非名单很长,否则可能不值得。