XPath路径表达式入门

XPath路径表达式

  • XPath路径表达式是XML文档中查找数据的语言
  • 掌握XPath可以极大的提高在提取数据时的开发效率
  • 学习XPath本质就是掌握各种形式表达式的使用技巧

在使用XPath前还要安装一个Jaxen,Jaxen是一个开源的XPath库。和dom4j一样的导入方式,

Jaxen下载地址:链接:https://pan.baidu.com/s/11uE43FyjrTpYSFy0zxdVJA 密码:znom

 

通过XPath表达式来实现对xml数据的筛选

1.创建方法xpath(String xpathExp) xpathExp代表传入的表达式

2.String file进行加载

3.SAXReader读取文件 read(file)

4.核心方法:doucument.selectNods(xxx); 用来执行XPath表达式 返回一个List<>集合用来包含所查询的节点 

List<xx>中xx规定为Node,并不是Element,因为XPath表达式可以查询属性和标签,而Node是属性和便签的父类,所以使用Node

5.查询到节点后,要进行遍历,使用for循环,要进行强制类型转换

6.attributeValue(“xx”)可以直接获得属性的值

package com.cc.schemajava;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.Node;import org.dom4j.io.SAXReader;public class XPathTestor { public void xpath(String xpathExp) { String file = "C:UsersJunDesktopjava webjspday3XML2srccomccschemastudent.xml"; SAXReader read = new SAXReader(); try { Document document = read.read(file); List<Node> nodes = document.selectNodes(xpathExp); for(Node node : nodes) { Element emp = (Element)node; System.out.println("编号:"+emp.attributeValue("no")); System.out.println("姓名:"+emp.elementText("name")); System.out.println("年龄:"+emp.elementText("age")); System.out.println("分数:"+emp.elementText("score")); System.out.println("***************"); } } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { XPathTestor test = new XPathTestor();// test.xpath("/students/student"); 必须从<students>下获取<student>标签,是有顺序的获取// test.xpath("//student"); 从整个XML中获取<student>标签,不考虑位置// test.xpath("//student[score<50]"); 从整个XML中获取<student>标签中<score>标签文本小于50的标签// test.xpath("//student[name='测试2号']"); 通过姓名来查找员工信息,注意:name=''是使用单引号// test.xpath("//student[@no=3304]"); 通过属性来查找员工信息,注意:格式为:@xx=yyy// test.xpath("//student[1]"); 获取员工编号最小的员工信息 (类似查找位置)// test.xpath("//student[last()]"); 通过last()函数来获取员工编号最大的员工信息// test.xpath("//student[position()<3]"); 通过范围来查找员工信息,position()<3 小于前3的员工信息// test.xpath("//student[3] | //student[8]"); 通过具体位置来查找员工信息,使用"|"可以同时输出多个员工信息 }}

test.xpath(“/students/student”); 必须从<students>下获取<student>标签,是有顺序的获取

test.xpath(“//student”); 从整个XML中获取<student>标签,不考虑位置

test.xpath(“//student[score<50]”); 从整个XML中获取<student>标签中<score>标签文本小于50的标签

test.xpath(“//student[name=’测试2号’]”); 通过姓名来查找员工信息,注意:name=”是使用单引号

test.xpath(“//student[@no=3304]”); 通过属性来查找员工信息,注意:格式为:@xx=yyy

test.xpath(“//student[1]”); 获取员工编号最小的员工信息 (类似查找位置,等于第一个)

test.xpath(“//student[last()]”); 通过last()函数来获取员工编号最大的员工信息 (类似查找位置,等于第一个),[last()-1]就是倒数第二个

test.xpath(“//student[position()<3]”); 通过范围来查找员工信息,position()<3 小于前3的员工信息

test.xpath(“//student[3] | //student[8]”); 通过具体位置来查找员工信息,使用”|”可以同时输出多个员工信息

 

物联沃分享整理
物联沃-IOTWORD物联网 » XPath路径表达式入门

发表评论