JsoupDemo6_XMLSelector和Xpath两种快捷查询方式

XML快捷查询方式:

student.xml

<?xml version="1.0" encoding="UTF-8" ?>
<students>
	<student number="heima_0001">
		<name id="itcast">
			<xing></xing>
			<ming></ming>
		</name>
		<age>100</age>
		<sex>female</sex>
	</student>
	<student number="heima_0002">
		<name>lisi</name>
		<age id="sili">45</age>
		<sex>female</sex>
	</student>
 </students>
1. selector:选择器(JsoupDemo6)
* 使用的方法是:Elements	select​(String cssQuery) 
	* 语法:参考Selector类中定义的语法
代码
/**
 * 选择器查询
 *      document继承自ELement对象,document的返回值是ELement
 */
public class JsoupDemo6_Selector {
    public static void main(String[] args) throws IOException {

        //1获取student.xml的path
        String path = JsoupDemo6_Selector.class.getClassLoader()
        					.getResource("student.xml").getPath();
        //2解析xml文档,加载文档进内存,获取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);

    }
}
2. Xpath:(JsoupDemo7)
* XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。
* 使用Jsoup的Xpath需要额外导入jar包。(JsoupXpath-0.3.2.jar)

查询w3cshool参考手册,使用Xpath的语法完成查询。

代码
/**
 * 选择器查询
 *      document继承自ELement对象,document的返回值是ELement
 * 导入jar包:
 *      JsoupXpath-0.3.2.jar
 */
public class JsoupDemo7_Xpath {
    public static void main(String[] args) throws IOException, XpathSyntaxErrorException {

        //1获取student.xml的path
        String path = JsoupDemo7_Xpath.class.getClassLoader()
        				.getResource("student.xml").getPath();

        //2解析xml文档,加载文档进内存,获取Document对象
        Document document = Jsoup.parse(new File(path), "utf-8");

		//--------------------------------------------------------------------
        //3、根据document对象,创建JXDocument对象
        JXDocument jxDocument = new JXDocument(document);

        //4、结合Xpath的语法查询(返回所有student,不考虑位置)
        //4.1查询所有student标签
        List<JXNode> jxNodes = jxDocument.selN("//student");
        for (JXNode jxNode : jxNodes) {//iter
            System.out.println("jxNode"+":"+jxNode);
        }
        System.out.println("------------------------");
        //4.2查询所有student标签下的name标签
        List<JXNode> jxNodes1 = jxDocument.selN("//student/name");
        for (JXNode jxNode : jxNodes1) {//iter
            System.out.println("jxNodes1"+":"+jxNode);
        }
        System.out.println("------------------------");

        //4.3查询student标签下带有id属性的name标签
        List<JXNode> jxNodes2 = jxDocument.selN("//student/name[@id]");
        for (JXNode jxNode : jxNodes2) {//iter
            System.out.println("jxNodes2"+":"+jxNode);
        }
        System.out.println("------------------------");
        //4.4查询student标签下带有id属性的name标签,并且属性值为itcast
        List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id='itcast']");
        for (JXNode jxNode : jxNodes3) {//iter
            System.out.println("jxNodes3"+":"+jxNode);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值