1、xpth技术

1.1、xpath的作用

主要用于快速获取所需的节点对象。

list<Node> selectNodes("xpath");  查询多个节点对象
                     selectSingleNode("xpath");  查询一个节点对象

1.2、在dom4j中如何使用xpath技术

1.导入xpath技术jar包:jaxen-1.1-beta-6.jar
    2.使用xpath的方法

2、xpath语法          XPath在线文档

     绝对路径    表示从xml的跟位置开始或者子元素(一个层次结构)
    //     相对路径    表示不分任何层次结构的选择元素.
        通配符    表示匹配所有元素
    [ ]    条件    表示选择什么条件下的元素
       属性    表示属性节点
    and  关系    表示条件与关系(等价于&&)
    text  文本    表示选择文本内容

3、实例

例1:

 package com.shore.xpath;

 import java.io.File;
import java.io.FileOutputStream; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; public class Demo1 {
public static void main(String[] args) throws Exception {
/*
* 需求:删除id值为001的学生标签
* */
Document doc=new SAXReader().read(new File("./src/contact.xml"));
//查询id为2的学生标签
//使用xpath技术
Element stuEle=(Element)doc.selectSingleNode("//contact[@id='001']");
stuEle.detach();//删除 //创建写出通道对象
FileOutputStream out=new FileOutputStream("F:/contact.xml");
OutputFormat format=OutputFormat.createPrettyPrint();//设置写xml出文件的格式
format.setEncoding("utf-8");
//写出xml文件到F盘下
XMLWriter write=new XMLWriter(out,format);
//写出
write.write(doc);
write.close();
}
}

 例2:

 package com.shore.xpath;

 import java.io.File;
import java.util.List; import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.io.SAXReader; /*
* 学习xPath语法
* */
public class Demo2 {
public static void main(String[] args) throws Exception {
Document doc=new SAXReader().read(new File("./src/contact.xml"));
String xpath="";
/*
* 1./ 绝对路径,从xml的跟位置开始或子元素开始(一个层次)
* */
xpath="/contactList";
xpath="/contactList/contact";
/*
* 2.// 相对定位,表示部分任何层次结构的选择元素
* */
xpath="//contact[1]/name";
xpath="//name";
/*
* 3.* 通配符,表示匹配所有元素
* */
xpath="/contactList/*";
xpath="/contactList//*";
/*
* 4.[] 条件,表示选择什么条件下的元素
* */
//带有id属性的contact标签
xpath="//contact[@id]";
xpath="//contact[2]";
xpath="//contact[last()]";
/*
* @ 属性; and 表示条件与关系(等价于&&)
* */
xpath="//@id";
xpath="//contact[not(@id)]";
xpath="//contact[@id='001' and @name='张三']";
/*
* text() 表示选择文本内容
* */
//选择name标签下的文本内容
xpath="//name//text()";
List<Node> list=doc.selectNodes(xpath);
for (Node node : list) {
System.out.println(node.getText());
}
}
}

contact.xml文档(注:上面的两个实例都用到此文件)

 <contactList>
<contact id="001" name="zhangsan">
<name>张三</name>
<age>18</age>
<phone>15779593710</phone>
<email>872855221@qq.com</email>
<qq>872855221</qq>
<abc>
<a><b></b></a>
</abc>
</contact>
<contact name="zhangsan">
<name>张三</name>
<age>18</age>
<phone>15779593710</phone>
<email>872855221@qq.com</email>
<qq>872855221</qq>
</contact>
<contact id="002">
<name>李四</name>
<age>20</age>
<phone>1314580</phone>
<email>12580@qq.com</email>
<qq>832144529</qq>
</contact>
</contactList>

附录

 package com.shore.login;

 import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader; import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; //模拟登陆
public class Demo1 {
public static void main(String[] args) throws Exception {
//1获取用户输入的用户名密码
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入用户名:");
String name=br.readLine(); System.out.println("请输入密码:");
String password=br.readLine(); //2.到数据库中查询是否有对应用户
//对应的用户:在user.xml文件中找到一个
Document doc=new SAXReader().read(new File("./src/user.xml"));
Element userElement=(Element)doc.selectSingleNode("//user[@name='"+name+"' and @password='"+password+"']"); if(userElement !=null){
//登录成功
System.out.println("登录成功!"); }else{
//登录失败
System.out.println("登录失败,账号或密码错误!");
}
}
}

user.xml(作用:该文件中 存在的账号和密码,并且一一对应,才能登陆成功)

 <?xml version="1.0"  encoding="utf-8"?>
<users>
<user id="001" name="zhangsan" password="123456"></user>
<user id="002" name="wangwu" password="123456"></user>
<user id="003" name="lisi" password="123456"></user>
</users>

结果图

原创作者:DSHORE

作者主页:http://www.cnblogs.com/dshore123/

原文出自:https://www.cnblogs.com/dshore123/p/9579998.html

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

java基础75 xpth技术(网页知识)的更多相关文章

  1. Java基础-零拷贝技术应用案例

    Java基础-零拷贝技术应用案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 零拷贝技术在Hadoop生态圈中很多组件得到应用,典型的比如kafka组件,它就很成功的应用了零拷贝 ...

  2. Java基础96 ajax技术的使用

    本文知识点(目录): 1.ajax的概念   2.使用ajax技术获取服务端的数据_实例   3.使用ajax技术检查用户名是否已存在_实例   4.使用ajax技术验证登录页面的用户名和密码_实例 ...

  3. Java基础之IO技术(一)

    ---恢复内容开始--- Java基础中的IO技术可谓是非常重要,俗话说的好,万丈高楼起于垒土之间.所以学习Java一定要把基础学好,今天我们来学习IO技术的基础. IO无非就是输入与输出,而其中处理 ...

  4. java基础56 HTML5的标签知识(网页知识)

    本文知识点(目录): 1.html常用标签    2.html实体标签    3.html媒体标签    4.html超链接标签    5.html图片标签    6.html标个标签 7.html框 ...

  5. 重学JAVA基础(八):锁的基本知识

    1.线程状态 如上图,当我们新建一个线程,并start后,其实不一定会马上执行,因为只有操作系统调度了我们的线程,才能真正进行执行,而操作系统也随时可以运行其他线程,这时线程又回到可运行状态.这个过程 ...

  6. java 基础之 反射技术

    1. java代码 在 java 语言中最核心的就是代码的运行, 按照面向对象的思想,在调用java代码时往往需要先创建对象,再调用方法, 而写在方法中的即所谓的java 代码 一段java代码在程序 ...

  7. Java基础——关于jar包的知识

    在学习jar包之前,要先弄懂Java包,以及关于Java包的相关概念. 一.包 为了更好地组织类,Java提供了包机制.包是类的容器,用于分隔类名空间.如果没有指定包名,所有的示例都属于一个默认的无名 ...

  8. Java基础笔记之String相关知识

    (二)String Sring 被声明为 final ,因此不可被继承. String的不可变性: 看String的定义(java9版本): public final class String imp ...

  9. JAVA基础之会话技术-Cookie及Session

    至此,学习Servlet三个域对象:ServletContext(web项目).request(一次请求).Session(一个客户端)!均有相同的方法! 从用户开始打开浏览器进行操作,便开始了一次会 ...

随机推荐

  1. 20165218 《网络对抗技术》Exp0 Kali安装 Week1

    Kali Linux安装 下载 在Kali官网下载Kali Linux 64 Bit版本 打开VM,选择文件->新建虚拟机,一直点击下一步,注意这里选择稍后安装操作系统 版本中找不到Kali,可 ...

  2. .net mvc 一个Action的 HttpGet 和 HttpPost

    http://www.cnblogs.com/freeliver54/p/3747836.html 本文转自:http://stackoverflow.com/questions/11767911/m ...

  3. TIME_WAIT状态的一些总结

    前言: TCP断开连接的四次握手中, 主动关闭连接的一方的TIME_WAIT状态尤为重要. 1:TCP连接的三次握手和断开的四次挥手 2:由上图可知 在主动关闭的一方, 会经历TIME_WAIT状态, ...

  4. Dockerfile编写注意事项

    转载自:https://blog.fundebug.com/2017/05/15/write-excellent-dockerfile/ 一.目标 更快的构建速度 更小的Docker镜像大小 更少的D ...

  5. GO_06:GO语言基础之struct

    结构struct 1. Go 中的struct与C中的struct非常相似,并且Go没有class 2. 使用 type <Name> struct{} 定义结构,名称遵循可见性规则(即首 ...

  6. Hadoop生态圈-Hive的自定义函数之UDF(User-Defined-Function)

    Hadoop生态圈-Hive的自定义函数之UDF(User-Defined-Function) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  7. css选择器 nth-child

    html代码: <div> <p>多云转晴</p> <p>多云转晴</p> <p>多云转晴</p> <p> ...

  8. 从github上下载一个csv文件

    when u open the raw file(i.e. csv) on github, then point to RAW button, then right click the mouse, ...

  9. HttpContext.Current為空匯總

    1. async異步模式下為空 解决办法: <httpRuntime targetFramework="4.5" /> 或者: In your appSettings, ...

  10. Enumeration和Iterator

    首先,Enumeration已经被Iterator取代了..... Enumeration是个接口,不是类,使用时需要具体的实现类. 里面只定义了两个方法: hasMoreElements()和nex ...