Java解析xml的响应报文

响应报文返回信息:

<?xml version="1.0" encoding="GBK"?>

<ROOT>
  <HEAD>
    <DemoCode></DemoCode>
    <ChanCode>11</ChanCode>
    <DemoCent></DemoCent>
    <DemoGlb></DemoGlb>
    <DemoBank></DemoBank>
    <DemoTell></DemoTell>
    <Code>000</Code>
    <Msg>交易成功</Msg>
    <Date>20200909</Date>
    <Time>093035</Time>
    <TrsCode>6029</TrsCode>
    <TrsChild></TrsChild>
    <DemoSerial>1599615034960</DemoSerial>
  </HEAD>
  <BODY>
    <total>500</total>
    <pagesize>19</pagesize>
    <rows>
      <xh>70</xh>
      <demo>1310000000</demo>
      <company>阿里巴巴</company>
      <zxjedhwe>C11112</zxjedhwe>
    </rows>
    <rows>
      <xh>71</xh>
      <demo>13110000000</demo>
      <company>宇宙无敌天下商会</company>
      <zxjedhwe>C11114</zxjedhwe>
    </rows>
    <rows>
      <xh>72</xh>
      <demo>140900000</demo>
      <company>娃哈哈有限公司</company>
      <zxjedhwe>C11111</zxjedhwe>
    </rows>
  </BODY>
</ROOT>

采用DOM4J解析

特征:

1、JDOM的一种智能分支,它合并了许多超出基本XML文档表示的功能。

2、它使用接口和抽象基本类方法。

3、具有性能优异、灵活性好、功能强大和极端易用的特点。

4、是一个开放源码的文件

以下是解析代码:

	/**
	 * 解析响应报文
	 *
	 * @param resMsgXml  响应报文xml
	 * @return
	 * @throws Exception
	 */
	private static ResultJson parsingXml(String resMsgXml) throws Exception {
     
		JSONObject json = new JSONObject();
		Document doc = DocumentHelper.parseText(resMsgXml); // 将字符串转为XML
		Element rootElt = doc.getRootElement(); // 获取根节点
		Iterator iter = rootElt.elementIterator("HEAD"); // 获取根节点下的子节点head
		// 遍历head节点
		while (iter.hasNext()) {
     
			Element recordEle = (Element) iter.next();
			String resCode = recordEle.elementTextTrim("Code"); // 拿到head节点下的子节点值
			if (!("000".equals(resCode))) {
     
				log.info("解析报文返回失败信息resMsgXml:" + resMsgXml);
				String resMsg = recordEle.elementTextTrim("Msg"); // 拿到head节点下的子节点值
				return ResultJson.setErrorMsg(resMsg);
			}
		}
		Iterator iterss = rootElt.elementIterator("BODY"); //获取根节点下的子节点body
		// 遍历body节点
		List<Object> list = new ArrayList<>();
		while (iterss.hasNext()) {
     
			Element book = (Element) iterss.next();
			Iterator iterss2 = book.elementIterator("rows"); //获取body节点下的子节点rows
			while (iterss2.hasNext()) {
     
				Element recordEless = (Element) iterss2.next();
				String fileName = recordEless.elementTextTrim("company");
				JSONObject jsonObject = new JSONObject();
				jsonObject.put("company",fileName);
				list.add(jsonObject);
			}
		}
		if(list.size()>0){
     
            return ResultJson.setSucessData(list);
        }
		return ResultJson.setErrorMsg("没有信息");
	}

XML解析——Java中XML的四种解析方式

你可能感兴趣的:(java,xml)