问题:在项目开发中对接银行接口,由于银行接口使用的技术比较古老,接口返回的数据为xml格式。xml数据多层嵌套存在多个标签循环,类似与java中的List对象集合。下面的方法就是对多相同xml标签进行读取,并转为List对象集合。
参考工具类:Hutool
xml示例
<note>
<trans>
<detail>
<id>001</id>
<name>李三三</name>
<phone>001</phone>
</detail>
<detail>
<id>001</id>
<name>李三三</name>
<phone>001</phone>
</detail>
<detail>
<id>001</id>
<name>李三三</name>
<phone>001</phone>
</detail>
</trans>
</note>
核心代码
/**
* 解析响应报文xml
*/
private List<Tran> parseResponseXml(Document document) {
List<Tran> trans = new ArrayList<>();
Element transElement = XmlUtil.getElementByXPath("//note/trans", document);
List<Element> elements = XmlUtil.getElements(transElement, "detail");
for (Element element : elements) {
trans.add(toTran(element));
}
return trans;
}
/**
* xml交易记录转对象
*/
private Tran toTran(Element element) {
Tran tran = new Tran();
tran.setId(XmlUtil.elementText(element, "id"));
tran.setName(XmlUtil.elementText(element, "name"));
tran.setPhone(XmlUtil.elementText(element, "phone"));
return tran;
}