1.Xpath简介
Xpath即XML Path Language, XPath是一门在XML文档中查找信息的语言。利用XPath可以对XML文档进行元素和属性的遍历。
2.包的导入
(1)导入dom4j.jar包,并build path
(2)导入dom4j/lib 中的 jaxen.jar包,并build path
3.常用语法
/ 开始,表示到一个元素的绝对路径(必须从根元素开始)
// 开始,表示选择文档中所有满足双斜线后规则的元素(无论层级关系)
[ ] 里的表达式可以进一步的指定元素
@ 指定属性
| 多个路径之间使用
4.Demo
下面的代码直接读取了price元素(car.xml)
//使用xpath技术取得xml文件中任意级别下的内容
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/web/java/xml/xpath/car.xml"));
String xpath = "//price";
Element element = (Element) document.selectSingleNode(xpath);
System.out.println("第一辆汽车的单价为:" + element.getText());
4.Demo2
使用Xpath,模拟用户登录
有如下user.xml文档,解析其中的用户数据,在控制台模拟登录过程
<?xml version="1.0" encoding="UTF-8"?>
<root>
<user id="u01" username="well" pwd="1234" />
<user id="u02" username="admin" pwd="1234" />
</root>
编写测试代码如下:
package web.java.xml.xpath;
import java.io.File;
import java.util.Scanner;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Demo2 {
public static void main(String[] args) throws Exception {
//利用扫描流读取用户输入的数据
Scanner scanner = new Scanner(System.in);
System.out.print("用户名:");
String username = scanner.nextLine();
System.out.print("密码:");
String pwd = scanner.nextLine();
//解析XML文件,并查询指定的元素
File file = new File("src/web/java/xml/xpath/user.xml");
SAXReader saxReader = new SAXReader();
Document doc = saxReader.read(file);
String xpath="//user[@username='"+username+"' and @pwd='"+pwd+"']";
Element element = (Element) doc.selectSingleNode(xpath);
if(element != null){
System.out.println("Login Success!");
}else{
System.out.println("Login Failed!");
}
}
}