xml解析--Jsoup快捷查询方式
引入
以前当我们想获取<student> -> <name> -> <xing> -> "张"
时,我们需要先依次获取对应的标签。在获取内容
我们希望有一种快捷的方式,一下子就能定位到这里。
因此就有了快捷查询方式。
快捷查询方式
selector
选择器查询
使用方法:Elements select(String cssQuery)
selector语法
参考selector中定义的语法
package com.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;
/**
* @author OldAZ-PC
* 选择器查询
*/
public class JsoupDemo5 {
public static void main(String[] args) throws Exception {
//1 获取student。xml的路径
String path = JsoupDemo2.class.getResource("student.xml").getPath();
//2.获取Document对象
Document document = Jsoup.parse(new File(path), "utf-8");
//3.查询name标签
Elements elements = document.select("name");
System.out.println(elements);
System.out.println("---------------");
//4.查询id值为id01的元素
Elements elements1 = document.select("#id01");
System.out.println(elements1);
System.out.println("---------------");
//5.获取student标签并且number属性值为xml_0001的age子标签
//5.1获取student标签并且number属性为xml_0001
Elements elements2 = document.select("student[number='xml_0001']");
System.out.println(elements2);
System.out.println("---------------");
//5.2获取student标签并且number属性值为xml_0001的age子标签
Elements elements3 = document.select("student[number='xml_0001']>age");
System.out.println(elements3);
}
}
XPath
w3c定义的一种语法
XPath即为XML路径语言(XML Path Language),
它是一种用来确定XML文档中某部分位置的语言。
XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。
起初XPath的提出的初衷是将其作为一个通用的、介于XPointer与XSL间的语法模型。
但是XPath很快的被开发者采用来当作小型查询语言。
使用Jsoup的XPath需要导入额外的jar包
JsoupXpath-0.3.2.jar
参考w3c的XPath语法文档来使用
package com.xml.jsoup;
import cn.wanghaomiao.xpath.model.JXDocument;
import cn.wanghaomiao.xpath.model.JXNode;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.File;
import java.util.List;
/**
* @author OldAZ-PC
* XPath查询
*/
public class JsoupDemo6 {
public static void main(String[] args) throws Exception {
//1 获取student。xml的路径
String path = JsoupDemo2.class.getResource("student.xml").getPath();
//2.获取Document对象
Document document = Jsoup.parse(new File(path), "utf-8");
//3.根据document对象,创建JXDocument对象
JXDocument jxDocument = new JXDocument(document);
//4.1结合xpath语法查询所有的student标签
List<JXNode> jxNodes = jxDocument.selN("//student");
for (JXNode jxNode:jxNodes){
System.out.println(jxNode);
}
System.out.println("===================");
//4.2查询所有的student标签下的那么标签
List<JXNode> jxNodes2 = jxDocument.selN("//student/name");
for (JXNode jxNode:jxNodes2){
System.out.println(jxNode);
}
System.out.println("===================");
//4.3查询student标签下带有属性的name标签
List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id]");
for (JXNode jxNode:jxNodes3){
System.out.println(jxNode);
}
System.out.println("===================");
//4.3查询student标签下带有属性的name标签,并且id的属性值为id01
List<JXNode> jxNodes4 = jxDocument.selN("//student/name[@id='id01']");
for (JXNode jxNode:jxNodes4){
System.out.println(jxNode);
}
System.out.println("===================");
}
}