Soap报文解析,用dom4j如何做?

无爱大叔 2018-12-28 12:39:02
<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Body>
<ZPILOT01_KTSC_MMIF022_N.Response xmlns="urn:sap-com:document:sap:rfc:functions.response">
<ERSDA1>0000-00-00</ERSDA1>
<LAEDA1>0000-00-00</LAEDA1>
<MAKTX/>
<MATKL/>
<MATNR/>
<MEINS/>
<ITAB>
<item>
<MATNR> 0000300280</MATNR>
<MAKTX>燃料气</MAKTX>
<MEINS>M3</MEINS>
<MATKL>07020102</MATKL>
<ERSDA>2016-12-29</ERSDA>
<LAEDA/>
<LVORM/>
<ZMLLX/>
<EKGRP>L78</EKGRP>
</item>
<item>
<MATNR>00000300644</MATNR>
<MAKTX>0号 车用柴油(Ⅴ)</MAKTX>
<MEINS>TO</MEINS>
<MATKL>07030301</MATKL>
<ERSDA>2017-08-29</ERSDA>
<LAEDA>2018-11-15</LAEDA>
<LVORM/>
<ZMLLX/>
<EKGRP/>
</item>
</ITAB>
</ZPILOT01_KTSC_MMIF022_N.Response></soap-env:Body></soap-env:Envelope>

取item下的集合
...全文
488 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
十八道胡同 2018-12-28
  • 打赏
  • 举报
回复
当做普通xml来解析就好了吧

/根据"/"路径获取元素
List<Element> list = root.selectNodes("/companys/company/name");
System.out.println(list.size());
for (Element element : list) {
System.out.println("name元素的值是:"+element.getText());
}
//根据"//"路径获取元素
List<Element> list1 = root.selectNodes("//name");
System.out.println(list1.size());
for (Element element : list1) {
System.out.println("name元素的值是:"+element.getText());



https://blog.csdn.net/xyphf/article/details/78525244
  • 打赏
  • 举报
回复
楓VS痕 2018-12-28
  • 打赏
  • 举报
回复
把xml内容写入当前项目 src/book.xml文件中,导入dom4j的jar包
楓VS痕 2018-12-28
  • 打赏
  • 举报
回复

public static void main(String[] args) {
SAXReader reader = new SAXReader();
try {
Document document = reader.read(new File("src/book.xml"));
Element bookStore = document.getRootElement().element("Body").element("ZPILOT01_KTSC_MMIF022_N.Response").element("ITAB");
Iterator it = bookStore.elementIterator();
while (it.hasNext()) {
System.out.println("=====开始遍历=====");
Element book = (Element) it.next();
Iterator itt = book.elementIterator();
while (itt.hasNext()) {
Element bookChild = (Element) itt.next();

System.out.println("节点名:" + bookChild.getName() + " ------节点值:" + bookChild.getStringValue());
}
System.out.println("=====结束遍历=====");
}
} catch (DocumentException e) {
e.printStackTrace();
}
}


无爱大叔 2018-12-28
  • 打赏
  • 举报
回复
引用 3 楼 LCL_data 的回复:
https://blog.csdn.net/u012350533/article/details/78003005 他是先全部遍历 存入map,然后在读取 ,是个办法
按这个写了,还是不行,遍历总是跳出
十八道胡同 2018-12-28
  • 打赏
  • 举报
回复
https://blog.csdn.net/u012350533/article/details/78003005

他是先全部遍历 存入map,然后在读取 ,是个办法
无爱大叔 2018-12-28
  • 打赏
  • 举报
回复
引用 1 楼 LCL_data 的回复:
当做普通xml来解析就好了吧
/根据"/"路径获取元素
        List<Element> list = root.selectNodes("/companys/company/name");
        System.out.println(list.size());
        for (Element element : list) {
            System.out.println("name元素的值是:"+element.getText());
        }       
        //根据"//"路径获取元素
        List<Element> list1 = root.selectNodes("//name");
        System.out.println(list1.size());
        for (Element element : list1) {
            System.out.println("name元素的值是:"+element.getText());
https://blog.csdn.net/xyphf/article/details/78525244
这样写不行,我前面就试过 List<Element> list = root.selectNodes("/soap-env:Body/ZPILOT01_KTSC_MMIF022_N.Response/ITAB/item");

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧