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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ida反编译出来代码能直接用吗_xrl指令

    ida反编译出来代码能直接用吗_xrl指令IDAPro直接修改指令—以将jnz修改为jz为例子理清程序的逻辑后,采用最简单的办法控制程序的执行路径——修改指令。首先,通过菜单栏中Options/General/Disassembly/Numberofopcodebytes设置IDA使其显示指令的机器码。一般修改为16jnz的机器码为75,只需将其改为jz的机器码74。修改方法:Edit/Patchpr…

    2025年5月30日
    3
  • 第20章,运维自动化之ansible

    第20章,运维自动化之ansible

    2022年4月3日
    34
  • Linux更改文件的权限[通俗易懂]

    Linux更改文件的权限[通俗易懂]Linux下一切皆文件,对文件的权限管理是Linux安全的一个重要特性,那么修改文件的权限是一个必要的技能了。一、命令chown(changeowner)-更改文件的所有者语法:chown【-R】账户名/账户名:组名文件名二、命令chgrp(changegroup)-更改文件属于的组别 创建分组的命令:groupadd分组名 添加文件到分组:chgrp组名文件名chgrpgroup_afile_a。 同样chgrp也可以更改目录的组别,用法和文件一样,不过目录.

    2025年9月7日
    8
  • JVM 优化经验总结

    JVM 优化经验总结一、JVM架构图1.JVM总体概述JVM总体上是由类装载子系统(ClassLoader)、运行时数据区、执行引擎、内存回收这四个部分组成。其中我们最为关注的运行时数据区,也就是JVM的内存部分则是由方法区(MethodArea)、JAVA堆(Heap)、虚拟机栈(Stack)、程序计数器、本地方法栈这几部分组成;除此以外,在概念中还有一个直接内存的概念,事实上这部分内存并不属于虚拟机规范中定义的内存区域,但是因为在JDK1.4+后新加的NIO类,以及JDK1.8+后的Metaspace的关系,所

    2022年5月6日
    49
  • hdu1024—最大m段不重合子序列和:策略优化

    hdu1024—最大m段不重合子序列和:策略优化

    2021年8月7日
    59
  • 开了一把奥地利站

    开了一把奥地利站

    2021年7月21日
    67

发表回复

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

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