当前位置:网站首页>xml文件使用及解析
xml文件使用及解析
2022-07-28 03:54:00 【程序三两行】
一、概述
Xml和html都是一种标记语言,但是xml是可扩展的标记语言,之所以是可扩展的,对于html所有的标记比如,<a>表示一个连接。都是有一定含义的,不能自己定义一些标签,但是xml就可以自定义一些标签。用于传输数据
<?xml version="1.0" encoding="UTF-8"?>
<!--上面一句是xml文档说明 必须放在第一行-->
<!--每一个xml都有一个根标签包含子标签 并且却分大小写-->
<goodlist>
<!--每个子标签有自己的属性 比如id属性-->
<good id="111">
<name>apple</name>
<place>beijing</place>
</good>
<good>
<name>banana</name>
<place>shanghei</place>
</good>
</goodlist>二、约束文件
平时编写的xml文件,没有固定的规则,标签名 属性名 属性值可以随意定义,但是如果想让别人在使用自己xml文件的使用,不能随意定义相关标签,就要在这个xml文件中加入约束文件,常见的约束文件有两DTD(文件名后缀是dtd)和schema(文件名后缀是xsd)两种,相比较而言,schema约束文件更加高级全面。DTD约束和schema约束(干的是同样的事情 只不过功能强大不同)
位置
内部dtd
外部dtd
三、解析
概述
1. JAXP:sun公司提供的解析器,支持dom和sax两种思想
2. DOM4J:一款非常优秀的解析器
3. Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
4. PULL:Android操作系统内置的解析器,sax方式的。
DOM4J解析
方式是dom方式,把xml文件加载到内存中形成一个dom树



并得到一个document对象。可以使用dom4j进行dom方式的解析
将Dom4j的jar包放在工程根目录当中创建一个文件夹为lib(javase工程);web工程直接放到WEB-INF中的lib文件

也可以使用dom4j生成xml文件

或者

结果

jsoup 解析
概述
是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
* 步骤:
1. 导入jar包
2. 获取Document对象
3. 获取对应的标签Element对象
4. 获取数据
案例代码
//获取student.xml的path
String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
//解析xml文档,加载文档进内存,获取dom树--->Document
Document document = Jsoup.parse(new File(path), "utf-8");
//获取元素对象 Element
Elements elements = document.getElementsByTag("name");
System.out.println(elements.size());
//获取第一个name的Element对象
Element element = elements.get(0);
//获取数据
String name = element.text();
System.out.println(name);使用文档
1. Jsoup:工具类,可以解析html或xml文档,返回Document
* parse:解析html或xml文档,返回Document
* parse(File in, String charsetName):解析xml或html文件的。
* parse(String html):解析xml或html字符串
* parse(URL url, int timeoutMillis):通过网络路径获取指定的html或xml的文档对象
2. Document:文档对象。代表内存中的dom树
* 获取Element对象
* getElementById(String id):根据id属性值获取唯一的element对象
* getElementsByTag(String tagName):根据标签名称获取元素对象集合
* getElementsByAttribute(String key):根据属性名称获取元素对象集合
* getElementsByAttributeValue(String key, String value):根据对应的属性名和属性值获取元素对象集合
3. Elements:元素Element对象的集合。可以当做 ArrayList<Element>来使用
4. Element:元素对象
获取子元素对象
* getElementById(String id):根据id属性值获取唯一的element对象
* getElementsByTag(String tagName):根据标签名称获取元素对象集合
* getElementsByAttribute(String key):根据属性名称获取元素对象集合
* getElementsByAttributeValue(String key, String value):根据对应的属性名和属性值获取元素对象集合
获取属性值
* String attr(String key):根据属性名称获取属性值
获取文本内容
* String text():获取文本内容
* String html():获取标签体的所有内容(包括字标签的字符串内容)
5. Node:节点对象
* 是Document和Element的父类
*6.快捷查询方式
selector:选择器
* 使用的方法:Elements select(String cssQuery)
* 语法:参考Selector类中定义的语法
XPath:XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言
* 使用Jsoup的Xpath需要额外导入jar包。
* 查询w3cshool参考手册,使用xpath的语法完成查询
* 代码:
//1.获取student.xml的path
String path = JsoupDemo6.class.getClassLoader().getResource("student.xml").getPath();
//2.获取Document对象
Document document = Jsoup.parse(new File(path), "utf-8");
//3.根据document对象,创建JXDocument对象
JXDocument jxDocument = new JXDocument(document);结合xpath语法查询
//查询所有student标签
List<JXNode> jxNodes = jxDocument.selN("//student");
for (JXNode jxNode : jxNodes) {
System.out.println(jxNode);
}
System.out.println("--------------------");
//查询所有student标签下的name标签
List<JXNode> jxNodes2 = jxDocument.selN("//student/name");
for (JXNode jxNode : jxNodes2) {
System.out.println(jxNode);
}
System.out.println("--------------------");
//查询student标签下带有id属性的name标签
List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id]");
for (JXNode jxNode : jxNodes3) {
System.out.println(jxNode);
}
System.out.println("--------------------");
//查询student标签下带有id属性的name标签 并且id属性值为itcast
List<JXNode> jxNodes4 = jxDocument.selN("//student/name[@id='itcast']");
for (JXNode jxNode : jxNodes4) {
System.out.println(jxNode);
}边栏推荐
- CANopen learning notes
- Basic knowledge of day08 redis
- Advanced Mathematics (Seventh Edition) Tongji University exercises 3-4 personal solutions (the last 8 questions)
- 数据丰富的计算:M.2在边缘遇到AI
- Data mining-02
- 【OPENVX】对象基本使用之vx_convolution
- C语言力扣第45题之跳跃游戏 II。遍历跳跃
- Protocols in swift
- Msgan is used for pattern search of multiple image synthesis to generate confrontation Network -- to solve the problem of pattern collapse
- Detailed explanation of pointer written test questions (C language)
猜你喜欢

Selenium -- Web automated testing tool

95后阿里P7晒出工资单:真的是狠狠扎心了...

Dynamic planning - 63. Different paths II

Dynamic planning - 62. Different paths

常用的接口测试工具

Monotonic stack - 739. Daily temperature

Differences among BRD, MRD and PRD
![[leetcode] 34. Find the first and last positions of elements in the sorted array](/img/f0/3eaa33fa7b13abe5f27b136239507d.png)
[leetcode] 34. Find the first and last positions of elements in the sorted array

Ch340 RTS DTR pin programming drives OLED

Common interface testing tools
随机推荐
Move notice!
数据挖掘-02
Vertical align align the elements in the row are vertically centered
Qt:QMessageBox消息框、自定义信号和槽
The latest version of pagoda installs the zip extension, and PHP -m does not display the processing method
递归和非递归分别实现求第n个斐波那契数
高等数学(第七版)同济大学 习题3-5 个人解答
[openvx] VX for basic use of objects_ convolution
Basic knowledge of day08 redis
Web Security Foundation - Command Execution Vulnerability
Greed - 55. Jumping game
deepstream 检测结果截图
【OPENVX】对象基本使用之vx_lut
Read Plato farm's eplato and the reason for its high premium
LeetCode 0141. 环形链表 - 三种方法解决
高等数学(第七版)同济大学 习题3-4 个人解答(前8题)
Dynamic planning - 1049. Weight of the last stone II
常用的接口测试工具
Common weak network testing tools
【OPENVX】对象基本使用之vx_distribution