这个是上个月工作中调试接口的时候用到的,今天得空给简单整理下,

需求是:从返回的xml报文中读取IMAGENUMBER字段(多个),取其最大值。

先截取报文中的一部分感受下:

下面开始对报文进行解析,直接上代码:

/*** @param imgResp xml资源的String格式* @param paramName    目标参数名* @return*/public int praseXmlResponse(String imgResp, String paramName) {int amount = 0;try {Document doc = DocumentHelper.parseText(imgResp);Element root = doc.getRootElement();Iterator<Element> iter = root.elementIterator();List<Integer> praseXMLResp = new ArrayList<>();praseXML(iter, praseXMLResp, paramName, "string");System.out.println("praseXMLResp: "+praseXMLResp);if(praseXMLResp==null || praseXMLResp.isEmpty()){return amount;}amount = Collections.max(praseXMLResp);} catch (DocumentException e1) {e1.printStackTrace();}return amount;}/*** @param imgRespUrl  xml资源路径* @param paramName    目标参数名* @return*/public int praseXmlResponse2(String imgRespUrl, String paramName) {int amount = 0;SAXReader reader = new SAXReader();try {Document doc = reader.read(new File(imgRespUrl));Element root = doc.getRootElement();Iterator<Element> iter = root.elementIterator();List<Integer> praseXMLResp = new ArrayList<>();praseXML(iter, praseXMLResp, paramName, "string");System.out.println("praseXMLResp: "+praseXMLResp);if(praseXMLResp==null || praseXMLResp.isEmpty()){return amount;}amount = Collections.max(praseXMLResp);} catch (DocumentException e) {e.printStackTrace();}return amount;}/*** @param iter* @param key1  目标字段父标签* @param key2 目标字段标签* @return*/public List<Integer> praseXML(Iterator<Element> iter, List<Integer> praseXMLResp, String key1, String key2) {if(iter==null || key1==null || key2==null){return null;}while(iter.hasNext()){Element ele = iter.next();String eleName = ele.getName();if(key1.equals(eleName)){Iterator<Element> iter2 = ele.elementIterator();while(iter2.hasNext()){Element ele2 = iter2.next();String eleName2 = ele2.getName();if(key2.equals(eleName2)){//praseXMLResp.add(ele2.getText());praseXMLResp.add(Integer.parseInt(ele2.getText()));}}}else{Iterator<Element> iter2 = ele.elementIterator();praseXML(iter2, praseXMLResp, key1, key2);}}return praseXMLResp;}

完了可以找个xml文件简单测试下:

public static void main(String[] args) {PraseXml test = new PraseXml();//String xmlStr = "";//资源xml文件的String格式String xmlStr = "src/main/resources/queryImgResp.xml";//资源xml文件路径String paramName = "IMAGENUMBER";//序号//String respNum = test.praseXmlResponse(xmlStr, paramName);int respNum = test.praseXmlResponse2(xmlStr, paramName);System.out.println("序号最大值: "+respNum);}

不出意外的话,常见的xml资源基本都可以搞定,出现搞不定的情况另行谷歌百度了。

最后附上之前看剧时无意间get到的诗一首,很是能代表此时这十一假期的心情:

练得身形似鹤形,

千株松下两函经,

我来问道无馀说,

云在青天水在瓶!

解析复杂xml资源获取目标参数值相关推荐

  1. 【Groovy】Xml 反序列化 ( 使用 XmlParser 解析 Xml 文件 | 获取 Xml 文件中的节点和属性 | 获取 Xml 文件中的节点属性 )

    文章目录 一.创建 XmlParser 解析器 二.获取 Xml 文件中的节点 三.获取 Xml 文件中的节点属性 四.完整代码示例 一.创建 XmlParser 解析器 创建 XmlParser 解 ...

  2. python解析xml+得到pascal voc xml格式用于目标检测+美化xml

    1.python解析xml img_path='./data/001.tif'xml_path='./xml/001.xml'img=cv2.imread(img_path)# cv2.imshow( ...

  3. java解析xml实例——获取天气信息

    获取xml并解析其中的数据: package getweather.xml;import java.io.IOException; import java.util.HashMap; import j ...

  4. C#解析xml文件获取中国的省市县地区名称和zipcode编号

    全栈工程师开发手册 (作者:栾鹏) c#教程全解 C#解析xml文件获取中国的省市县名称获zipcode编号.需要提交加载xml文件.获取市级城市时,需要提供省级名称.获取县级城市市需要提供省级和市级 ...

  5. 如何解析xml报文获取数据集合

    场景:最近业务上需要处理xml的返回结果,由于处理的xml是一棵比较深的树,我们需要解析到底层进行数据收集 1.引入依赖 <!-- 解析xml方法--><dependency> ...

  6. 一、android XML资源文件详解 —— 从物理上分析

    转载地址:http://blog.csdn.net/Scotfield_msn/article/details/52455022?locationNum=8 一.android工程文件夹内容介绍 在e ...

  7. [系统安全] 四十一.APT系列(6)Python解析PE文件并获取时间戳判断来源区域

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  8. java 解析/操作 xml 几种常用方式 xml的增加/删除/修改

    java 解析/操作 xml 几种常用方式 xml的增加/删除/修改 首先,我们先介绍几种常用的xml解析器. 1. 介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方 ...

  9. 使用原始的XML资源

    6.5使用原始的XML资源 在某些时候,android应用有些初始化的配置信息,应用相关的数据资源需要保存,一般推荐使用xml文件来保存它们,这种资源就被成为原始XML资源. 6.5.1 定义原始xm ...

最新文章

  1. oracle增量备份如何恢复,【Oracle】增量备份和全库备份怎么恢复数据库
  2. Linux - 命令
  3. mysql 64位 安装1045_MySql 安装时的1045错误
  4. 常用的正则化方法总结
  5. linux ssh环境,在Linux下ssh 环境的登录 和 文件拷贝
  6. MS DOS 命令大全
  7. 北美地区IPv4地址已用完,网络IP地址告急?
  8. memcpy的用法与strcpy的区别及纯c语言实现
  9. USB转串口那些事儿—串口驱动类型
  10. 2019互联网+直播平台开发如何发展?
  11. TD阵营折大将 芯片商凯明将面临倒闭[转]
  12. pve 不订阅更新_炉石传说pve冒险到底好玩在哪里?绯夜千雪来告诉你!
  13. Flutter InAppWebView 软键盘问题
  14. 2022.03.24【基因组组装】|获取比对到参考基因组的contig序列
  15. [NOI2022] 众数 题解
  16. VOLTE与VOWIFI对比
  17. css实现从左到右渐变色
  18. L1-058 6翻了 (15分)
  19. omnet 收发信息
  20. TCPUDP测试工具 1.02 绿色版 - 绿色软件联盟 - 可定时发送数据

热门文章

  1. C#实战之CAD二次开发004:插入尺寸标注
  2. 时间固定效应和个体固定效应的选择_STATA固定效应的时间固定和个体固定效应估计方法、检验策略和操作步骤...
  3. “动感”新春:香港高铁首次加入春运 车票抢手
  4. SQL考点之SQL查询、SQL支持数据类型(设计大题)
  5. 基于英汉平行语料库的机器翻译知识获取研究
  6. 加薪必备,SpringMVC精品面试题(这必须收藏啊!)
  7. Ubuntu16.04下安装类似于windows下微信软件,非网页版微信(内附安装包和详细安装指令)
  8. 享元模式 - Unity
  9. ff14注册完服务器可以转,FF14怎么转服 FF14转服条件一览-游侠网
  10. Hive sql 常用命令总结