使用Dom4j解析多层命名空间的xml
使用Dom4j解析多层命名空间的xml
xml模板信息:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<soap:Envelope
xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">
<soap:Body>
<CallInterfaceResponse
xmlns=\"http://tempuri.org/\">
<CallInterfaceResult>
<Response>
<ResultCode>1</ResultCode>
<ResultMsg></ResultMsg>
<Items>
<Item>
<ID>28</ID>
<PID>2000570446</PID>
<VISIT>1</VISIT>
<VISITTYPE>2</VISITTYPE>
<DZSQDH>01P202203-2500003</DZSQDH>
<SXRQSJ>2022-03-25 10:56:48</SXRQSJ>
<XDMB>5000022025695</XDMB>
<SXPZDM>BIS60</SXPZDM>
<SXL>1.50</SXL>
<SXLJLDW>U</SXLJLDW>
</Item>
<Item>
<ID>32</ID>
<PID>2000117428</PID>
<VISIT>1</VISIT>
<VISITTYPE>2</VISITTYPE>
<DZSQDH>01P202203-2500005</DZSQDH>
<SXRQSJ>2022-03-25 10:14:28</SXRQSJ>
<XDMB>5000022057327</XDMB>
<SXPZDM>BIS60</SXPZDM>
<SXL>1.50</SXL>
<SXLJLDW>U</SXLJLDW>
</Item>
</Items>
</Response>
</CallInterfaceResult>
</CallInterfaceResponse>
</soap:Body>
</soap:Envelope>
需求:获取所有Item中的内容
Java代码:
Document document = null;
try {
document = DocumentHelper.parseText(str.replaceAll("\\n", ""));
} catch (DocumentException e) {
e.printStackTrace();
}
Map<String, String> nameSpaceMap = new HashMap<>();
// 获得命名空间
String nsURI = document.getRootElement().getNamespaceURI();
nameSpaceMap.put("soap", "http://schemas.xmlsoap.org/soap/envelope/");
nameSpaceMap.put("xmlns", "http://tempuri.org/");
// 创建解析路径,就是在普通的解析路径前加上map里的key值
XPath xPath = document.createXPath("//soap:Envelope/soap:Body/xmlns:CallInterfaceResponse/xmlns:CallInterfaceResult"
+ "/xmlns:Response/xmlns:Items/xmlns:Item");
xPath.setNamespaceURIs(nameSpaceMap);
List<Element> elementList = xPath.selectNodes(document);
for (Element element : elementList) {
List<Element> list = element.elements();
for (Element element4 : list) {
System.out.println(element4.getName() + "*******" + element4.getText());
}
}
需要引入的依赖:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.2.2</version>
</dependency>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了