共计 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); | |
} | |
} |
}