共计 6812 个字符,预计需要花费 18 分钟才能阅读完成。
package cn.itcast.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 {
//2. 获取 Document 对象,根据 xml 文档获取
//2.1 获取 student.xml 的 path
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);
}
}
package cn.itcast.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;
import java.net.URL;
/**
- Jsoup 对象功能
*/
public class JsoupDemo2 {
public static void main(String[] args) throws IOException {
//2.1 获取 student.xml 的 path
String path = JsoupDemo2.class.getClassLoader().getResource("student.xml").getPath();
//2.2 解析 xml 文档,加载文档进内存,获取 dom 树 --->Document
/* Document document = Jsoup.parse(new File(path), "utf-8");
System.out.println(document);*/
//2.parse(String html):解析 xml 或 html 字符串
/* String str = "<?xml version=\"1.0\"encoding=\"UTF-8\"?>\n" +
"\n" +
"<students>\n" +
"\t<student number=\"heima_0001\">\n" +
"\t\t<name>tom</name>\n" +
"\t\t<age>18</age>\n" +
"\t\t<sex>male</sex>\n" +
"\t</student>\n" +
"\t<student number=\"heima_0002\">\n" +
"\t\t<name>jack</name>\n" +
"\t\t<age>18</age>\n" +
"\t\t<sex>female</sex>\n" +
"\t</student>\n" +
"\n" +
"</students>";
Document document = Jsoup.parse(str);
System.out.println(document);*/
//3.parse(URL url, int timeoutMillis):通过网络路径获取指定的 html 或 xml 的文档对象
URL url = new URL("https://baike.baidu.com/item/jsoup/9012509?fr=aladdin");// 代表网络中的一个资源路径
Document document = Jsoup.parse(url, 10000);
System.out.println(document);
}
}
package cn.itcast.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;
import java.net.URL;
/**
- Document/Element 对象功能
*/
public class JsoupDemo3 {
public static void main(String[] args) throws IOException {
//1. 获取 student.xml 的 path
String path = JsoupDemo3.class.getClassLoader().getResource("student.xml").getPath();
//2. 获取 Document 对象
Document document = Jsoup.parse(new File(path), "utf-8");
//3. 获取元素对象了。//3.1 获取所有 student 对象
Elements elements = document.getElementsByTag("student");
System.out.println(elements);
System.out.println("-----------");
//3.2 获取属性名为 id 的元素对象们
Elements elements1 = document.getElementsByAttribute("id");
System.out.println(elements1);
System.out.println("-----------");
//3.2 获取 number 属性值为 heima_0001 的元素对象
Elements elements2 = document.getElementsByAttributeValue("number", "heima_0001");
System.out.println(elements2);
System.out.println("-----------");
//3.3 获取 id 属性值的元素对象
Element itcast = document.getElementById("itcast");
System.out.println(itcast);
}
}
package cn.itcast.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;
/**
*Element 对象功能
*/
public class JsoupDemo4 {
public static void main(String[] args) throws IOException {
//1. 获取 student.xml 的 path
String path = JsoupDemo4.class.getClassLoader().getResource("student.xml").getPath();
//2. 获取 Document 对象
Document document = Jsoup.parse(new File(path), "utf-8");
/*
Element:元素对象
1. 获取子元素对象
* getElementById(String id):根据 id 属性值获取唯一的 element 对象
* getElementsByTag(String tagName):根据标签名称获取元素对象集合
* getElementsByAttribute(String key):根据属性名称获取元素对象集合
* getElementsByAttributeValue(String key, String value):根据对应的属性名和属性值获取元素对象集合
2. 获取属性值
* String attr(String key):根据属性名称获取属性值
3. 获取文本内容
* String text(): 获取所有字标签的纯文本内容
* String html(): 获取标签体的所有内容 ( 包括子标签的标签和文本内容)
*/
// 通过 Document 对象获取 name 标签,获取所有的 name 标签,可以获取到两个
Elements elements = document.getElementsByTag("name");
System.out.println(elements.size());
System.out.println("----------------");
// 通过 Element 对象获取子标签对象
Element element_student = document.getElementsByTag("student").get(0);
Elements ele_name = element_student.getElementsByTag("name");
System.out.println(ele_name.size());
// 获取 student 对象的属性值
String number = element_student.attr("NUMBER");
System.out.println(number);
System.out.println("------------");
// 获取文本内容
String text = ele_name.text();
String html = ele_name.html();
System.out.println(text);
System.out.println(html);
}
}
package cn.itcast.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;
/**
* 选择器查询
*/
public class JsoupDemo5 {
public static void main(String[] args) throws IOException {
//1. 获取 student.xml 的 path
String path = JsoupDemo5.class.getClassLoader().getResource("student.xml").getPath();
//2. 获取 Document 对象
Document document = Jsoup.parse(new File(path), "utf-8");
//3. 查询 name 标签
/*
div{ }
*/
Elements elements = document.select("name");
System.out.println(elements);
System.out.println("=----------------");
//4. 查询 id 值为 itcast 的元素
Elements elements1 = document.select("#itcast");
System.out.println(elements1);
System.out.println("----------------");
//5. 获取 student 标签并且 number 属性值为 heima_0001 的 age 子标签
//5.1. 获取 student 标签并且 number 属性值为 heima_0001
Elements elements2 = document.select("student[number=\"heima_0001\"]");
System.out.println(elements2);
System.out.println("----------------");
//5.2 获取 student 标签并且 number 属性值为 heima_0001 的 age 子标签
Elements elements3 = document.select("student[number=\"heima_0001\"] > age");
System.out.println(elements3);
}
}
package cn.itcast.xml.jsoup;
import cn.wanghaomiao.xpath.exception.XpathSyntaxErrorException;
import cn.wanghaomiao.xpath.model.JXDocument;
import cn.wanghaomiao.xpath.model.JXNode;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.io.File;
import java.io.IOException;
import java.util.List;
/**
*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> jxNodes2 = jxDocument.selN("//student/name");
for (JXNode jxNode : jxNodes2) {System.out.println(jxNode);
}
System.out.println("--------------------");
//4.3 查询 student 标签下带有 id 属性的 name 标签
List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id]");
for (JXNode jxNode : jxNodes3) {System.out.println(jxNode);
}
System.out.println("--------------------");
//4.4 查询 student 标签下带有 id 属性的 name 标签 并且 id 属性值为 itcast
List<JXNode> jxNodes4 = jxDocument.selN("//student/name[@id='itcast']");
for (JXNode jxNode : jxNodes4) {System.out.println(jxNode);
}
}
}