1 回答
![?](http://img1.sycdn.imooc.com/545862120001766302200220-100-100.jpg)
TA贡献1802条经验 获得超6个赞
您可以编写您的 POJO 类P,P_to_P类似于:
@XmlAccessorType(XmlAccessType.FIELD)
public class P_to_P {
@XmlElement(name = "Max")
private int max;
@XmlElement(name = "Min")
private int min;
@XmlElement(name = "P")
private P p;
// public getters and setters (omitted for brevity)
}
@XmlAccessorType(XmlAccessType.FIELD)
public class P {
@XmlElement(name = "Name")
private String name;
@XmlElement(name = "P_to_P")
private List<P_to_P> pToPList;
// public getters and setters (omitted for brevity)
}
然后你可以遍历整个树并像下面这样处理每个项目。
注意递归:方法process(P_to_P)调用process(P)和方法process(P)调用process(P_to_P)。还要注意null防止NullPointerException和终止递归的检查。
public static void main(String[] args) {
File file = new File("root.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Root.class);
Unmarshaller unmarshaller = jaxbCntext.createUnmarshaller();
Root root = (Root) unmarshaller.unmarshal(file);
P_to_P pToP = root.getComp().getPToP();
process(pToP);
}
private static void process(P_to_P pToP) {
if (pToP == null)
return;
// do anything you like here
process(pToP.getP());
}
private static void process(P p) {
if (p == null)
return;
// do anything you like here
if (p.getpToPList() == null)
return;
for (P_to_P pToP : p.getpToPList()) {
process(pToP);
}
}
添加回答
举报