利用dom4j解析soap型消息xml

  面对webservice返回的xml文件

一、首先要了解xml的基本属性,前往w3school了解一下

https://www.w3school.com.cn/xml/xml_namespaces.asp

二、仔细观察返回值

结合返回值进行下一步操作

一般java处理xml有两种方式

1、dom4j

2、xpath

接下来只介绍 dom4j

返回值为:


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<bills billType="MaterialVO">
    <bill>
        <pk_task>707AD829A6350206E053</pk_task>
        <pk_org>0001O3100000000BI9JF</pk_org>
        <org>1117</org>
        <pk_material>1001O31000000002W5RE</pk_material>
        <itemno>11020000052</itemno>
        <itemname>洛伐他汀分散片</itemname>
        <itemsubno>lfttfsp</itemsubno>
        <itemspec>20mg*12片</itemspec>
        <itemunit>盒</itemunit>
        <produce>山东</produce>
        <producerno>G011598</producerno>
        <producername>齐鲁制药有限公司</producername>
        <bancodename>分散片</bancodename>
        <fileno>国药准字H20000230</fileno>
        <couterpackname>箱</couterpackname>
        <couterpackspec>300</couterpackspec>
        <storecondition>阴凉</storecondition>
        <transcondition>阴凉</transcondition>
        <typecode>14</typecode>
        <typename>化学药制剂</typename>
        <tranflag>0</tranflag>
        <trantime>2018-07-02 17:59:37</trantime>
    </bill>
</bills>

处理是(因为我的返回值较为麻烦,所以我的代码仅作为参考) 

 Document doc = new DefaultDocument();
 //返回结果对象转换
doc = DocumentHelper.parseText(res);//res为接口返回字符串类型的xml
//寻找根节点下的某一个为Body节点
Element memberElm=doc.getRootElement().element("Body");
//寻找根节点下的某一个为bill节点的集合并循环取
List> results = new ArrayList>();
 List list = doc.getRootElement().elements("bill");
                    Iterator iterator = list.iterator();
                    while (iterator.hasNext()) {
                        Element node = (Element) iterator.next();
                        Iterator lists = node.elementIterator();
                        Map map = new HashMap();
                        while (lists.hasNext()) {
                            Element nodes = (Element) lists.next();
                            map.put(nodes.getName(),nodes.getText());
                        }
                        results.add(map);
                    }

 

你可能感兴趣的:(利用dom4j解析soap型消息xml)