目录
快速入门
<?xml version="1.0" encoding="UTF-8" ?>
<students>
<student number="heima_0001">
<name>zhangsan</name>
<age>20</age>
<sex>male</sex>
</student>
<student number="heima_0002">
<name>lisi</name>
<age>22</age>
<sex>female</sex>
</student>
</students>
- JsoupDemo1.java
package com.my.xml.jsoup;
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.导入jar包
// 2.获取Document对象,根据xml文档获取
// 2.1 获取xml文档的路径
String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
// 2.2 解析xml文档,加载文档进内存,获取 dom 树 --> Document
Document document = Jsoup.parse(new File(path), "utf-8");
// 3. 获取元素Element
Elements elements = document.getElementsByTag("name");
// System.out.println(elements.size());
// 3.1 获取第一个name的element对象
Element element = elements.get(0);
// 3.2 获取数据
String name = element.text(); // 获取文本数据
System.out.println(name); // zhangsan
}
}
Jsoup对象
- Jsoup:工具类,可以解析 html 或 xml 文档,返回 Document对象
- 示例:
package com.my.xml.jsoup;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
import java.net.URL;
/**
* Jsoup对象
*/
public class JsoupDemo2 {
public static void main(String[] args) throws IOException {
// 1.parse(File in, String charsetName):解析 xml 或 html文件
/*
String path = JsoupDemo2.class.getClassLoader().getResource("student.xml").getPath();
Document document = Jsoup.parse(new File(path), "utf-8");
System.out.println(document);
*/
// 2.parse(String html)
/*
String str = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" +
"\n" +
"<students>\n" +
" <student number=\"heima_0001\">\n" +
" <name>zhangsan</name>\n" +
" <age>20</age>\n" +
" <sex>male</sex>\n" +
" </student>\n" +
"\n" +
" <student number=\"heima_0002\">\n" +
" <name>lisi</name>\n" +
" <age>22</age>\n" +
" <sex>female</sex>\n" +
" </student>\n" +
"</students>\n";
Document document = Jsoup.parse(str);
System.out.println(document);
*/
// 3.parse(URL url, int timeoutMillis):通过网络路径获取指定的 html
URL url = new URL("https://baike.baidu.com/item/jsoup");
Document document = Jsoup.parse(url, 10000);
System.out.println(document);
}
}
Document对象
- Document:文档对象。代表内存中的 dom 树
- 示例:
package com.my.xml.jsoup;
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;
/**
* Doucument(Element)对象
*/
public class JsoupDemo3 {
public static void main(String[] args) throws IOException {
// 获取student.xml的路径
String path = JsoupDemo2.class.getClassLoader().getResource("student.xml").getPath();
// 获取document对象
Document document = Jsoup.parse(new File(path), "utf-8");
// 1.获取所有 student 对象们
Elements elements = document.getElementsByTag("student");
System.out.println(elements);
System.out.println("===============");
// 2.获取属性名为 id 的元素对象们
Elements elements1 = document.getElementsByAttribute("id");
System.out.println(elements1);
System.out.println("===============");
// 3.获取属性名为number,属性值为heima_0001的元素
Elements elements2 = document.getElementsByAttributeValue("number", "heima_0001");
System.out.println(elements2);
System.out.println("===============");
// 4.获取id为name的对象
Element element = document.getElementById("name");
System.out.println(element);
}
}
Elements对象
- Elements:元素 Element 对象的集合。可以当作
ArrayList<Element>
来使用
Element对象
Node对象
- Node:节点对象
- 是 Document 和 Element 的父类
快捷查询方式
- selector:选择器
- 使用的方法:Elements select(String cssQuery)
- 语法:参考 Selector 类中定义的语法
- 使用的方法:Elements select(String cssQuery)
- XPath:XPath即为XML路径语言(XML Path Language),它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。
package com.my.xml.jsoup;
import cn.wanghaomiao.xpath.exception.XpathSyntaxErrorException;
import cn.wanghaomiao.xpath.model.JXDocument;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.File;
import java.io.IOException;
/**
* XPath查询
*/
public class JsoupDemo6 {
public static void main(String[] args) throws IOException, XpathSyntaxErrorException {
// 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);
// 4.结合Xpath语法查询
// 4.1 查询所有的student标签
List<JXNode> jxNodes = jxDocument.selN("//student");
for (JXNode jxNode : jxNodes) {
System.out.println(jxNode);
}
System.out.println("--------------");
// 4.2 查询所有student标签下的 name 标签
List<JXNode> jxNodes1 = jxDocument.selN("//student/name");
for (JXNode jxNode : jxNodes1) {
System.out.println(jxNode);
}
System.out.println("--------------");
// 4.3 查询所有student标签下带有id属性值的name标签
List<JXNode> jxNodes2 = jxDocument.selN("//student/name[@id]");
for (JXNode jxNode : jxNodes2) {
System.out.println(jxNode);
}
System.out.println("--------------");
// 4.4 查询所有student标签下带有id属性值的name标签,并且id属性值为 itcast
List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id='itcast']");
for (JXNode jxNode : jxNodes3) {
System.out.println(jxNode);
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。