jsoup物件的使用

王碩_java發表於2020-12-04
* 物件的使用:
	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物件
			* getElementByTag(String tagName):根據標籤名稱獲取元素物件集合
			* getElementByAttribute(String key):根據屬性名稱獲取元素物件集合
			* getElementByAttributeValue(String key, String value):根據對應的屬性名和屬性值獲取元素物件集合
	3. Elements:元素Element物件的集合。可以當作ArrayList<Element>來使用
	4. Element:元素物件
		1. 獲取子元素物件
			* getElementById(String id):根據id屬性值來獲取唯一的element物件
			* getElementByTag(String tagName):根據標籤名稱獲取元素物件集合
			* getElementByAttribute(String key):根據屬性名稱獲取元素物件集合
			* getElementByAttributeValue(String key, String value):根據對應的屬性名和屬性值獲取元素物件集合

		2. 獲取屬性值
			* String attr(String key):根據屬性名稱獲取屬性值
		3.獲取文字內容
			* String text():獲取所有子標籤的純文字內容
			* String html():獲取標籤體的所有內容(包括子標籤的標籤和文字內容)
	5. Node:節點物件
		* 是Document和Element的父類

<?<?xml version="1.0" encoding="UTF-8"?>
<!--<!DOCTYPE students SYSTEM "students.dtd">-->
<students>
	<student number="s001">
		<name id="itcast">zhangsan</name>
		<age>23</age>
		<sex>male</sex>
	</student>

	<student number="s002">
		<name>lisi</name>
		<age>24</age>
		<sex>female</sex>
	</student>
</students>

package cn.itcast.xml.jsoup;

import javax.print.Doc;
import java.lang.annotation.Documented;
import java.net.URL;

public class JsoupDemo1{
	public static void main(String[] args) throws IOException{
		/*Jsoup物件功能*/
		//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");
		System.out.println(document);
		//2.parse(String html):解析xml或html字串
		String str="<?<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
				"<!--<!DOCTYPE students SYSTEM \"students.dtd\">-->\n" +
				"<students>\n" +
				"\t<student number=\"s001\">\n" +
				"\t\t<name>zhangsan</name>\n" +
				"\t\t<age>23</age>\n" +
				"\t\t<sex>male</sex>\n" +
				"\t</student>\n" +
				"\n" +
				"\t<student number=\"s002\">\n" +
				"\t\t<name>lisi</name>\n" +
				"\t\t<age>24</age>\n" +
				"\t\t<sex>female</sex>\n" +
				"\t</student>\n" +
				"</students>";
		Document document = Jsoup.parse(str);
		System.out.println(document);

		//3.parse(URL url, int timeoutMillis):通過網路路徑獲取指定的html或xml的文件物件
		URL url = new URL("https://jsoup.org/download");//代表網路中的一個資源路徑
		Document document = Jsoup.parse(url,10000);
		System.out.println(document);
		
		/*Document/Element物件功能*/
		//3.獲取元素物件
		//3.1獲取所有student物件
		Element elements = document.getElementByTag("student");
		System.out.println(elements);

		System.out.println("------");

		//3.2 獲取屬性名為id的元素物件們
		Elements elements = document.getElementByAttribute("id");
		System.out.println(elements);
		System.out.println("------");

		//3.2 獲取number屬性值為heima_001的元素物件
		Elements elements = document.getElementByAttributeValue("number","heima_001");
		System.out.println(elements);
		System.out.println("------");

		//3.3獲取id屬性值的元素物件
		Element itcast = document.getElementById("itcast");
		System.out.println(itcast);

		//Element元素物件
		//通過Document物件獲取name標籤,獲取所有的name標籤,可以獲取到兩個
		Elements elements = document.getElementByTag("name");
		System.out.println(elements.size());
		System.out.println("------");

		//通過Element物件獲取子標籤物件
		Element element_student = document.getElementByTag("student").get(0);
		Elements ele_name = element_student.getElementByTag("name");
		System.out.println(ele_name.size());

		//獲取student物件的屬性值
		String name = element_student.attr("number");
		System.out.println(number);

		//獲取文字內容
		String text = ele_name.text();
		String html = ele_name.html();
		System.out.println("------");
		System.out.println(text);
		System.out.println(html);
	}
}

相關文章