解析xml的单个节点值和循环节点消息体

 

需要引入

 1   <dependency>
 2             <groupId>dom4j</groupId>
 3             <artifactId>dom4j</artifactId>
 4             <version>1.6.1</version>
 5         </dependency>
 6         <dependency>
 7             <groupId>jaxen</groupId>
 8             <artifactId>jaxen</artifactId>
 9             <version>1.1-beta-11</version>
10         </dependency>
示例:

 1 public static void main(String[] args) throws DocumentException {
 2     String xmlString = "<data>\n" +
 3                         "    <message>\n" +
 4                         "        <status>0</status>\n" +
 5                         "        <value>处理成功</value>\n" +
 6                         "    </message>\n" +
 7                         "    <results>\n" +
 8                         "        <result>\n" +
 9                         "            <idcode>32XX0219X10XX5916</idcode>\n" +
10                         "            <name>张三 </name>\n" +
11                         "            <mobile/>\n" +
12                         "            <email/>\n" +
13                         "            <badinfos>\n" +
14                         "                <badinfo>\n" +
15                         "                    <match>[\"national_id\"]</match>\n" +
16                         "                    <reason>0</reason>\n" +
17                         "                    <reason_description>借款违约</reason_description>\n" +
18                         "                    <create_date_type/>\n" +
19                         "                    <amount_type>未知</amount_type>\n" +
20                         "                    <over_due_type>未知</over_due_type>\n" +
21                         "                    <legal_status>无</legal_status>\n" +
22                         "                </badinfo>\n" +
23                         "                <badinfo>\n" +
24                         "                    <match>[\"national_id\"]</match>\n" +
25                         "                    <reason>1</reason>\n" +
26                         "                    <reason_description>法律原因</reason_description>\n" +
27                         "                    <create_date_type/>\n" +
28                         "                    <amount_type>大于等于10000元</amount_type>\n" +
29                         "                    <over_due_type>未知</over_due_type>\n" +
30                         "                    <legal_status>已结案</legal_status>\n" +
31                         "                </badinfo>\n" +
32                         "            </badinfos>\n" +
33                         "        </result>\n" +
34                         "    </results>\n" +
35                         "</data>";
36 
37     // 字符串转XML  
38     Document doc = DocumentHelper.parseText(xmlString);
39     // XML转字符串   Document document = ...;  String text = document.asXML();
40     //获取单个节点文本内容
41     String total = doc.selectSingleNode("/data/message/value").getText();
42     System.out.println(total);
43     //获取xml循环消息体
44     List<Node> beannodes = doc.selectNodes("/data/results/result/badinfos/badinfo");
45     for (int i = 0; i < beannodes.size(); i++) {
46         //有node节点再获取单个节点文本内容
47         String reason = beannodes.get(i).selectSingleNode("./legal_status").getText();
48         System.out.println(reason);
49     }
50 }

 

posted @ 2022-03-14 16:57  蹉~跎  阅读(260)  评论(0)    收藏  举报