java补完——JS 中 xml 的解析(jsoup 解析器、dom4j 解析器)未完成

文章说明:黑色字体-已知,蓝色字体-所见即所得,红色字体-还需要再找资料弄明白的,黄色背景-提炼关键信息
参考资料:很多参考资料,段落下有原文链接到原作者

jsoup 解析器

一、概述
xml 的解析就是操作 xml 文档,将文档内容读取到内存中,解析的方法两种
dom:将标记语言文档一次性加载到内存,在内存中形成一颗 dom 树
sax:逐行解析
二、dom 和 sax 解析对比
dom 解析:
根据 xml 的层级结构在内存中分配一个树形结构,把 xml 的标签,属性和文本都封装成对象
优点:很方便实现增、删、改操作
缺点:消耗内存,会造成内存溢出
sax 解析:
采用事件驱动,边读边解析
从上到下,一行一行的解析,解析到某个对象就返回对象名称
优点:不占内存,方便实现查询操作
缺点:只能读取,不能实现增、删、改操作
三、解析器
不同的公司和组织提供了针对 dom 和 sax 方式的解析器,都是通过 api 方式提供的,主要有:
sun 公司提供的针对 dom 和 sax 解析器:Jaxp
dom4j 组织提供的针对 dom 和 sax 解析器:dom4j(开发中用的最多)
jdom 组织提供的针对 dom 和sax 解析器:Jdom
Java的HTML解析器,可以直接解析URL地址、HTML 文本内容:Jsoup
四、Jsoup 解析器
1、导入 jar 包
导入 jsoup-1.12.1.jar 包
链接:https://pan.baidu.com/s/1wz8NKy2xgqTV5lzc4CbaQQ
提取码:rwwo
2、获取 Document 对象
parse()方法:解析 HTML 或 xml 文档,返回 Document 对象
parse(File in,String charsetName):解析 xml 或 HTML 文件
parse(String html):解析 xml 或 HTML 字符串
parse(URL url,int timeoutMillis):通过网络路径获取指定的 HTML 或 xml 文档对象
3、获取对应的标签 Element 对象
getElementById(String id):根据id属性值获取唯一的element对象
getElementByTag(String tagName):根据标签名称获取元素对象集合
getElementByAttribute(String key):根据属性名称获取元素对象集合
getElementByAttributeValue(String key,String value):根据对应的属性名称和属性值获取元素对象集合
4、获取数据
5、快捷查询
【1】selector:选择器
使用上面的查询需要先查询到上一级元素才能往下查询,工作量比较大,jsoup 就提供了一种快捷查询的方法,即使用 selector 选择器
Elements select(String cssQuery)
【2】XPath
快捷查询还有一种 xpath 方法查询,这个在下一篇 dom4j 解析器叙述

dom4j 解析器

一、使用 dom4j 修改数据
1、导入 jar 包
使用 dom4j-1.6.1.jar包
链接:https://pan.baidu.com/s/18IaiY30xwZbGKrQDYp4xKQ
提取码:3jkx
2、获取 Document 对象
创建解析器对象:SAXReader saxReader = new SAXReader();
解析 xml 文件获取 document 对象:Document document = saxReader.read(url);
3、获取对应的标签 Element 对象
得到根元素:Element root = document.getRootElement();
4、获取数据
element(qname):获取指定标签下面第一个字标签,参数qname表示标签的名
elements(qname):获取指定标签下面所有的子标签(一层的标签)
elements():获取标签下面的所有一层子标签
5、末尾添加数据
setText(“文本内容”):添加文本
回写 xml
格式化:OutputFormat format = OutputFormat.createPrettyPrint(); //缩进xml
使用 XMLWriter 类:XMLWriter write = new XMLWriter(new FileOutputStream("./src/myDom4j/person.xml"),format);
6、指定位置添加数据
创建元素:Element school = DocumentHelper.createElement(“school”);
创建文本:school.addText(“光明小学”);
指定位置添加:list.add(1,school);
回写 xml:和在末尾添加一样
7、获取属性值
attributeValue():获取属性值
二、使用 dom4j 支持 xpath 操作
1、获取元素常见形式
使用 xpath 操作可以直接获取到某个元素,常见的一些获取形式有:
/AAA/DDD/BBB:表示一层一层的获取
//BBB:表示和这个名称相同,只要名称是 BBB 都可以获取到
/*:表示所有元素
BBB[1]:表示第一个 BBB 元素
BBB[last()]:表示 BBB 的最后一个元素
//BBB[@id]:表示只要 BBB 元素上面有 id 属性,都可以获取
//BBB[@id=‘b1’]:表示元素名称是 BBB,在 BBB 上面有 id 属性,并且 id 的属性值是 b1
2、xpath 开发具体操作
【1】导入 jar 包
使用 jaxen-1.1-beta-6.jar 包
链接:https://pan.baidu.com/s/1mSq4r6Jkz6flqdO-JT3Y-w
提取码:kl1y
【2】常用方法
selectNodes(“xpath表达式”):获取多个节点
selectStringleNode(“xpath表达式”):获取一个节点

原文链接:https://blog.csdn.net/One_L_Star/article/details/100099303
原文链接:https://blog.csdn.net/One_L_Star/article/details/100082074

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值