首页 > 代码库 > XPath详解
XPath详解
xPath技术
1 引入
问题:当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦!!!
2 xPath作用
主要是用于快速获取所需的节点对象。
3 在dom4j中如何使用xPath技术
1)导入xPath支持jar包 。 jaxen-1.1-beta-6.jar
2)使用xpath方法
List<Node> selectNodes("xpath表达式"); 查询多个节点对象
Node selectSingleNode("xpath表达式"); 查询一个节点对象
4 xPath语法
/ 绝对路径 表示从xml的根位置开始或子元素(一个层次结构)
// 相对路径 表示不分任何层次结构的选择元素。
* 通配符 表示匹配所有元素
[] 条件 表示选择什么条件下的元素
@ 属性 表示选择属性节点
and 关系 表示条件的与关系(等价于&&)
text() 文本 表示选择文本内容
代码练习:
package com.dom4j.xpath; import java.io.File; import java.util.List; import org.dom4j.Document; import org.dom4j.Node; import org.dom4j.io.SAXReader; public class xpathExercise { public static void main(String[] args) throws Exception { Document doc = new SAXReader().read(new File("./src/contact.xml")); String xpath = ""; xpath = "/contactList"; xpath = "//contact/name"; xpath = "//name"; xpath = "/*/*/age"; xpath = "/contactList/*"; xpath = "/contactList//*"; xpath = "//contact[@value]"; xpath = "//contact[@id]"; xpath = "//contact[2]"; xpath = "//contact[last()]"; xpath = "//@id"; xpath = "//contact[not(@id)]"; xpath = "//contact[@id=‘003‘ and @value=http://www.mamicode.com/‘hello‘]"; xpath = "//name/text()";//返回ext xpath = "//contact/name[text()=‘张三‘]"; List<Node> list = doc.selectNodes(xpath); for(Node node : list){ System.out.println(node); } } }
5 案例
用户登录功能:
用户输入用户名和密码 -> 到“数据库”查询是否有对应的用户 ->
有: 则表示登录成功
没有: 则表示登录失败
用xml当做数据库
user.xml 用来存储用户的数据
练习代码:
package com.xpath.example; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.io.SAXReader; public class userLogin { public static void main(String[] args) throws Exception { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); System.out.println("请输入用户名:"); String user = reader.readLine(); System.out.println("请输入密码: "); String pwd = reader.readLine(); Document doc = new SAXReader().read("./src/user.xml"); /* String xpath = "/users/user"; List<Node> list = doc.selectNodes(xpath); String id, name, passwd; for(Node node : list){ Element auser = (Element)node; id = auser.attribute("id").getValue(); name = auser.attribute("name").getValue(); passwd = auser.attribute("password").getValue(); if(name.equals(user) && passwd.equals(pwd)){ System.out.println(id + "在数据库中"); } } */ Element userElement = (Element)doc.selectSingleNode("//user[@name=‘" + user +"‘ and @password=‘" + pwd +"‘]"); if(userElement == null){ System.out.println("登录失败"); }else{ System.out.println("登录成功"); } } }
XPath详解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。