jsoup解析xml常用selector
阿新 • • 發佈:2020-08-19
selector可以讓我們篩選自己想要的資料從而提升開發效率
其中 document.select方法會返回一個elements集合我們可以通過在select方法裡面填寫不同的引數來篩選,抽取我們想要的資料然後再處理結果
具體實現步驟:
1、匯入jar包
2、解析文件
2.1獲取路徑
Stringpath =className.class.getClassLoader.getResourse("documentName.xml").getPath;
2.2得到文件
其中一種解析方法:
Document document=Jsoup.parse(new File(path),"utf-8");
其他:
Jsoup
xml文件原始碼:
<?xml version='1.0' encoding='utf-8'?> <students> <student id="1" class="man"> <name>李富貴</name> <age>18</age> <addr>湖南</addr> </student> <student id="2"> <name color="pingk">黃呀冬</name> <age>17</age> <addr>湘潭</addr> </student> <student id="3"> <name color="blue">馬冬梅</name> <age>33</age> <addr>四川</addr> </student> <student id="4" class="man"> <name>袁華</name> <age>22</age> <addr>南京</addr> </student> <student id="5"></student> <student id="6"></student> </students>
DocumentUtil類原始碼:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Evaluator;
import java.io.File;
import java.io.IOException;
public class DocumentUtil {
public static Document getDocument(String path){
try {
return Jsoup.parse(new File(path),"utf-8");
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
常用selector操作原始碼:
//獲取student.xml文件路徑
String path =Main.class.getClassLoader().getResource("student.xml").getPath();
//獲取student.xml文件
Document document= DocumentUtil.getDocument(path);
//獲取id為2的同學
Elements stu2 =document.select("#2");
System.out.println("id為2的同學:\n"+stu2+"\n============================");
//獲取id為1的同學的姓名(E F an F element descended from an E element) 獲取e 下面所有的 f
Elements stu1Name=document.select("#1 name");
String stu1NameStr=stu1Name.text();
System.out.println("id為1的同學的姓名:"+stu1NameStr+"\n============================");
//根據class獲取同學
Elements mans=document.select(".man");
System.out.println("class為man的同學:\n"+mans+"\n============================");
//輸出第一個學生
System.out.println(document.select("student:first-child"));
//獲取第二個學生(xx:eq(n) elements whose sibling index is equal to n) 獲取第n+1個xx元素
System.out.println("第二個學生:\n"+document.select("student:eq(1)"));
//輸出student.xml中含有冬的名字
System.out.println(document.select("name:contains(冬)").text());
//輸出屬性有 color的元素 [attr] elements with an attribute named "attr" (with any value) 屬性名為“attr”的元素(任意值)
System.out.println("屬性有color的元素:\n"+document.select("[color]")+"\n==============================");
//輸出屬性以c開頭的元素
System.out.println("屬性以co開頭的元素:\n"+document.select("[^co]")+"\n==============================");
//屬性為“color”,值為“blue”的元素
System.out.println("屬性為“color”,值為“blue”的元素:\n"+document.select("[color=blue]")+"\n==============================");
//color屬性的值以p開頭的元素
System.out.println("屬性的值以p開頭的元素:\n"+document.select("[color^=p]")+"\n==============================");
//輸出students所有的name元素
System.out.println("students下所有的name元素:+\n"+document.select("students name")+"\n=================");
//輸出students直接子類name(包含兒子 不包含孫子)
System.out.println("students直接子類name:\n"+document.select("students>name")+"\n=================");
//輸出所有的name,age元素
System.out.println("所有的name,age元素:\n"+document.select("name,age"));
注意事項:
xml文件千萬不要放在中文目錄下
如果使用ideaUTF-8 編碼設定,需要設定兩個地方,1, setting 2,otherSetting如果只在setting裡面設定編碼新建專案則容易出現中文亂碼問題因為在setting中只針對於當前 專案