解析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 }

浙公网安备 33010602011771号