背景:
在调用京东万象的短信接口的时候,它返回的是json格式的字符串,使用的是京东万象的106短信
接口(https://wx.jdcloud.com/market/datas/5/10306)
解析xml的两种方式进行比较:
1.DOM解析(DOM解析它是一次性将要解析的文件加载到内存,然后再进行解析)
2.SAX解析(SAX解析它是边读边解析)
总结:DOM解析不仅能读xml数据,还可以对其内容的节点进行增删改,而SAX解析只能读文件使用,所以使用DOM解析,DOM解析使用的是dom4j+xpath方式
XPath中如何使用路径表达式:
xml案例:

// 其中bookstore是根节点,book节点是bookstore节点的子节点,title节点和price节点是bookstore节点的后代节点
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore><book><title lang="eng">Harry Potter</title><price>29.98</price></book><book><title lang="eng">Learning XML</title><price>39.95</price></book>
</bookstore>

路径表达式如下:

表达式                   描述
节点名称                 选取此节点的所有子节点
/                       从根节点选取
//                      从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
.                       选取当前节点
..                      选取当前节点的父节点
@                       选取属性

在上面的xml文档案例上使用路径表达式:

路径表达式                             结果
bookstore                            选取bookstore元素的所有子节点
/bookstore                           选取根元素bookstore
bookstore/book                       选取bookstore的子元素中的所有book元素
//book                               选取所有book子元素,而不管他们在文档中的位置
bookstore//book                      选取bookstore元素的后代的所有book元素,而不管他们位于bookstore之下的什么位置
//@lang                              选取名为lang的所有属性
/bookstore/book[1]                   选取属于bookstore子元素的第一个book元素
/bookstore/book[last()]              选取属于bookstore子元素中的最后一个book元素
/bookstore/book[last()-1]            选取属于bookstore子元素中的倒数第二个book元素
/bookstore/book[position()<3]        选取属于bookstore子元素中的前二个book元素
//title[@lang]                       选取所有属性名称为lang的元素
//title[@lang='eng']                 选取所有属性名称为lang,并且属性值为eng的元素
/bookstore/book[price>35.00]         选取bookstore的子元素中的所有book元素,并且其中price元素的值必须大于35.00
/bookstore/book[price>35.00]/title   选取bookstore的子元素中的所有book元素中的所有title元素,并且其中price元素的值必须大于35.00

如何使用DOM解析:
1、引入依赖

<dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.0</version>
</dependency>

上面是dom4j的依赖,如果使用Maven工具,那就不需要引入xpath的依赖了,因为dom4j需要xpath依赖,所以Maven工具会帮我们引入;如果没有使用Maven工具,那还需要引入一个依赖叫:jaxen.jar,该jar包的作用是支持xpath语法的jar包
2、编写后端代码

// 这是json字符串里面包含xml字符串,可以从“**********解析xml格式的字符串开始***********”该注释处开始看解析xml字符串的方法
String jsonString = "{\n" +"    \"code\": \"10000\",\n" +"    \"charge\": false,\n" +"    \"remain\": 0,\n" +"    \"msg\": \"查询成功\",\n" +"    \"result\": \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\" ?><returnsms>\\n <returnstatus>Success</returnstatus>\\n <message>ok</message>\\n <remainpoint>-1333773</remainpoint>\\n <taskID>112459829</taskID>\\n <successCounts>1</successCounts></returnsms>\"\n" +"}";
// 将json格式的字符串转换为json对象
JSONObject jsonObject = JSONObject.parseObject(jsonString);// 获取通信标识
String code = jsonObject.getString("code");//判断通信是否成功
if (!StringUtils.equals("10000", code)) {return Result.error("短信平台通信异常");
}// 获取业务处理结果result,result中存储的就是xml格式的字符串
String resultXml = jsonObject.getString("result");// **********解析xml格式的字符串开始***********
// 将xml格式的字符串转换成Document对象
Document document = DocumentHelper.parseText(resultXml);// 获取returnstatus节点对象
Node returnstatusNode = document.selectSingleNode("//returnstatus");// 通过returnstatus节点对象获取该节点对象的内容
String text = returnstatusNode.getText();// 判断短信是否发送成功
if (!StringUtils.equals(text, "Success")) {return Result.error("短信平台发送失败");
}// 处理业务代码

3、java后端解析json字符串(地址:https://blog.csdn.net/qq_42449963/article/details/105394602)

java后台解析xml格式字符串相关推荐

  1. Java 中解析 xml 格式字符串的数据

    解析 xml 格式中的字符串数据 相信有很多小伙伴经历过接口返回的数据是在一段 xml 字符串格式的数据里,那么我们可用什么最快最便捷的方法取到里面的数据勒? 下面这里是一个xml 格式的是实例 这里 ...

  2. 解析xml格式字符串

    解析xml格式字符串 由于写接口时,总有人会传一些xml格式的字符串,节点少时可以一一获取,但是如果有大量的子节点时,可以使用反射机制实现实体类接收xml格式字符串数据,只需要保证节点名称和实体类字段 ...

  3. dom4j解析xml格式字符串获取标签属性和内容

    /*** 解析xml字符串,获取各项属性内容* readXML方法描述:* * @author : gc* @createTime : 2019-4-26 下午4:37:50*/private sta ...

  4. 安卓解析xml格式字符串

    最近实验室的安卓app需要实现发内部邮件的功能. 说白了就是简单的数据库的增删处理. 但是中间的一部分有意思的就是获取收件人的列表的处理. 用户在登录APP的时候,如果验证成功,服务器则把数据的联系人 ...

  5. java jdom格式_Java全面解析XML格式串(JDOM解析)

    搜索热词 Java全面解析XML格式串(JDOM解析) import java.io.IOException; import java.io.StringReader; import java.uti ...

  6. python xml字符串_python -解析字符串,并返回xml格式字符串 急该如何解决

    python --解析字符串,并返回xml格式字符串 急急急. str = """Registrations: ============================= ...

  7. C# 将XML格式字符串,写入数据集的表中 XML解析

    将XML格式字符串,写入数据集的表1中 命名空间:using System.Xml;             string strRead;//strRead为以下xml值 XmlDocument x ...

  8. Android解析xml的方法,Android中解析XML格式数据的方法

    XML介绍:Extensible Markup Language,即可扩展标记语言 一.概述 Android中解析XML格式数据大致有三种方法: SAX DOM PULL 二.详解 2.1 SAX S ...

  9. Android——网络交互,如何调用接口并且json解析json格式和pull解析xml格式

    本菜鸟因为之前一直使用的是公司前辈封装好的类(网络接口调用超级方便有木有)完全没有想过有一天我会自己写,然后今天接触的时候一脸懵逼,然后今天花了一天时间终于研究好了:哈哈哈哈哈 二话不说先上代码: p ...

最新文章

  1. python ftp模块_python中的FTP文件模块
  2. linux python自动补全_Linux下在python命令行中自动补全代码(py2、3,centos、ubuntu)...
  3. mysql执行计划_mysql的sql执行计划详解
  4. CSS清除行内元素之间的HTML空白
  5. 2019最后一个月Python继续霸榜,想上车?看这份书单
  6. JEECG第16期架构培训班15号开班,每期只有10个名额!想报名的同学速度啦!
  7. 经典神经网络 | 从Inception v1到Inception v4全解析
  8. 《天天数学》连载38:二月七日
  9. 程序员的脑回路太清奇,就一件衣服跟我叨叨半天
  10. html5支付认证,html5实现微信支付宝接口
  11. python利用什么写模板_利用python自动生成verilog模块例化模板
  12. CPU瓶颈(五)--过度编译与不必要重复编译的解决方案
  13. bjui刷新当前页签
  14. linux vi命令怎么使用方法,Linux下 vi 命令用法
  15. Uniswap进化之路
  16. 经典:智能物联网大数据系统案例
  17. 固态硬盘是什么接口_M.2 SSD固态硬盘的规格、接口、总线详解
  18. java实现随机游走算法_java – 简单的2D随机游走
  19. 百度直播消息系统的实践和演进
  20. core+Fleck+redis

热门文章

  1. python期中考试知识点_FRM和CFA的总共五次考试,我未有失手!
  2. Electron教程1_Electron介绍
  3. java调用阿里云上传和下载(项目亲测)
  4. golang如何实现静态变量的效果
  5. html语言与网页设计期末试卷,网页设计与制作期末考试试题及答案
  6. 實現193.5轉為一百玖拾叁元五角的存儲過程
  7. 【Linux常用命令小手册】
  8. 用户流失,该怎么分析?
  9. 丰富多彩的迷你特斯拉线圈的频率锁定电路
  10. linux安装un解压工具,压缩及解压缩工具