XML笔记(2)
- 作者: Wyt
系列文章目录
XML笔记(1) - 入门篇
XML笔记(2) - Jsoup篇
文章目录
7. Jsoup
7.1 jsoup的入门
* 概念: jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
- 开发步骤
1. 导入jar包
2. 获取Document对象
3. 获取对应的标签Element对象
4. 获取数据
jsoup下载地址: https://jsoup.org/download
1. 在Project包下新建libs文件夹, 用来存放jar包
2. 在官网下载jsoup-版本号.jar, 粘贴进libs文件夹
3. 右键点击libs文件夹 -> 点击 Add as Library -> Level 选择 Module Library
- 在src包下新建student.xml并进行配置
<?xml version="1.0" encoding="UTF-8" ?>
<students>
<student number="001">
<name>Tom</name>
<age>18</age>
<sex>male</sex>
</student>
<student number="002">
<name>Lucy</name>
<age>19</age>
<sex>female</sex>
</student>
</students>
- 代码示例
package com.wyt.xml.jsoup;
/**
* @author Wyt
* @date 2020/10/30 22:51
*/
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.File;
import java.io.IOException;
/**
* Jsoup快速入门
*/
public class JsoupDemo1 {
public static void main(String[] args) throws IOException {
//1. 获取Document对象, 根据xml文档对象
//1.1 获取student.xml的path
String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
//1.2 解析xml文档, 加载文档进内存, 获取dom树 --> Document
Document document = Jsoup.parse(new File(path), "utf-8");
//2 获取元素对象(数组)
Elements elements = document.getElementsByTag("name");
//2.1 打印元素的个数
System.out.println(elements.size());
//2.2 获取第一个name的Element的对象
Element element = elements.get(0);
//2.3 获取第一个name的Element对象
String name = element.text();
System.out.println(name);
}
}
控制台输出:
2
Tom
7.2 对象的使用
1. Jsoup: 工具类, 可以解析html或xml文档, 返回Document
2. Document: 文档对象。 代表内存的dom树
3. Elements: 元素Element对象的集合, 可以当做 ArrayList<Element>来使用
4. Element:元素对象
5. Node: 节点对象
* 是Document和Element的父类
7.2.1 Jsoup对象功能
* Jsoup:
(1)parse: 解析html或xml文档, 返回Document
(2)parse(File in, String CharsetName): 解析xml或html文件的
(3)parse(String html): 解析xml或html字符串
- 代码演示
package com.wyt.xml.jsoup;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.File;
import java.io.IOException;
import java.net.URL;
/**
* @author Wyt
* @date 2020/10/31 13:46
*/
public class JsoupDemo2 {
public static void main(String[] args) throws IOException {
//1. 获取Document对象, 根据xml文档对象
//1.1 获取student.xml的path
String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
//2.解析xml文档
//2.1 解析xml文档, 加载文档进内存, 获取dom树 --> Document
// Document document = Jsoup.parse(new File(path), "utf-8");
// System.out.println(document);
//2.2 parse(String html): 解析html或xml字符串
String str = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" +
"\n" +
"<students>\n" +
" <student number=\"001\">\n" +
" <name>Tom</name>\n" +
" <age>18</age>\n" +
" <sex>male</sex>\n" +
" </student>\n" +
"\n" +
" <student number=\"002\">\n" +
" <name>Lucy</name>\n" +
" <age>19</age>\n" +
" <sex>female</sex>\n" +
" </student>\n" +
"</students>\n";
// System.out.println(str);
//2.3 parse(URL url, int timeoutMillis): 通过网络路径获取指定的html或xml的文档对象
//url: 统一资源定位符, 表示互联网中的资源路径
//timeoutMillis: 超时时间 (毫秒)
URL url = new URL("https://www.open-open.com/jsoup/");
Document document2 = Jsoup.parse(url, 100000);
System.out.println(document2);
}
}
7.2.2 Document对象功能
* Document: 获取Element对象
(1)getElementById(String id): 根据id值获取唯一的element对象
(2)getElementsByTag(String TagName): 根据标签名称获取元素对象集合
(3)getElementsByAttribute(String key): 根据属性名称获取元素对象集合
(4)getElementsByAttributeValue(String key, String value): 根据对应的属性名称和属性值获取元素对象集合
7.2.3 Element对象功能
* Element: 获取子元素对象
1. 获取属性值
String attr(String key): 根据属性名称获取属性值
2. 获取文本内容
String text(): 获取文本内容
String html(): 获取标签体的所有内容(包括子标签的字符串内容)
7.3 选择器查询
- selector: 选择器
* 使用的方法: Elements select(String cssQuery)
语法:参考Selector类中定义的语法
7.4 XPath查询
* 简介: XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言
*使用Jsoup的Xpath需要额外导入jar包。
*查询w3cshool参考手册,使用xpath的语法完成查询