Java解析xml的响应报文

Java解析xml的响应报文响应报文返回信息:<?xmlversion=”1.0″encoding=”GBK”?><ROOT><HEAD><DemoCode></DemoCode><ChanCode>11</ChanCode><DemoCent></DemoCent><DemoGlb></DemoGlb><DemoBank>&l

大家好,又见面了,我是你们的朋友全栈君。

响应报文返回信息:

<?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的四种解析方式

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145119.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android NDK开发:打包so库及jar包供他人使用

    Android NDK开发:打包so库及jar包供他人使用Android的NDK开发相信各位已经精通各种姿势了。不过基本上都是那种native代码和java代码都在同一个工程中,因为应用从头到脚都是我们自己的,也不需要分离。但有时候可能需要我们自己把某些库打包起来供别人使用,或者使用别人提供给我们的库。本篇文章及下篇文章就讲讲so库如何打包。一、目标及方式这篇文章会讲第一种方式来打包so库,这种方式是基于jni层的,需要我们同时提供接口的jar包…

    2022年6月22日
    148
  • 如何快速学从零开始学习3d建模?

    如何快速学从零开始学习3d建模?其实对于初学者来说,3D建模是一个专业性偏强且极其难入手的游戏制作专业技术。如果是无基础从零开始的学习的话,没有一个好的学习方法和好的指导老师的话,还是比较困难的。那么如何从零基础开始学习3D建模?一、首先得知道什么是游戏3D建模在大型的游戏研发公司,3D建模是一个非常大的职能,分为4个岗位:3D角色低模手绘,3D场景低模手绘,次世代角色高模,次世代场景高模。通常我们所说的3D建模是指低模手绘。如果你需要好的学习环境,好的学习资源,这里欢迎每一位热爱游戏动漫模型的小伙伴,想要学习.

    2022年5月4日
    53
  • java函数式编程实例(函数式编程实例)

    描述:一元运算,接受一个T类型参数,输出一个与入参类型一样的值源码:publicinterfaceUnaryOperatorextendsFunction{/***Returnsaunaryoperatorthatalwaysreturnsitsinputargument.**@paramth

    2022年4月12日
    66
  • Windows 安装svn(出错已解决)和MySQL安装[通俗易懂]

    Windows 安装svn(出错已解决)和MySQL安装[通俗易懂]1.https://tortoisesvn.net/downloads.html网站下载2.安装的时候如果出现下图的报错打开这个网站https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=49062,会自动帮你下载下载完成后安装即可3.没有特殊需求则默认安装4.出现这个则安装成功MySQL安装…

    2022年8月19日
    8
  • 基于canal的client-adapter数据同步必读指南

    基于canal的client-adapter数据同步必读指南

    2020年11月19日
    211
  • 词频统计以及分析(词云制作)

    词频统计以及分析(词云制作)

    2021年11月10日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号