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. kibana5画图

    先展示一下我的Dashboard 1.Markdown文本 2.日志条数统计 3.访问IP前10柱状图 4.访问IP前10饼图 5.状态码饼图 6.状态码趋势图 7.状态码柱状叠加图 8.流量趋势图 ...

  2. Activity的setResult方法

    Activity的setResult方法http://blog.csdn.net/dinglin_87/article/details/8970144 调用setResult()方法必须在finish ...

  3. laravel DB listen 回调追踪产生 sql 语句的代码

    \DB::listen(function (QueryExecuted $sql) { \Log::info($sql->sql); \Log::info((new \Exception())- ...

  4. servlet与tomcat的关系

    1.4   Tomcat简介 学习Servlet技术,首先需要有一个Servlet运行环境,也就是需要有一个Servlet容器,本书采用的是Tomcat. Tomcat是一个免费的开放源代码的Serv ...

  5. k-Nearest Neighbor algorithm 思想

    转载      KNN--K最邻近算法思想 KNN算法的决策过程 k-Nearest Neighbor algorithm  上图中,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?如果K=3, ...

  6. SystemV-IPC

    这里记录的三种SystemV-IPC包括(消息队列,信号量以及共享内存) 1:标识符和键值 键值(key_t) : IPC结构的外部名(所谓外部名就是各用户进程可获得并操作的,通过它使用XXXget获 ...

  7. range循环

    for i in range(10): #特殊写法,从0开始,步长为1,最大值小于10 print("loop",i) print("=========") f ...

  8. 自动化工具制作PASCAL VOC 数据集

    自动化工具制作PASCAL VOC 数据集   1. VOC的格式 VOC主要有三个重要的文件夹:Annotations.ImageSets和JPEGImages JPEGImages 文件夹 该文件 ...

  9. 3 Kafka两个版本在Zookeeper的元数据存储

    0.8 [consumers, admin, config, controller, brokers, controller_epoch] 这些节点都归于谁管理 consumers: 0.8版本的客户 ...

  10. 2017 清北济南考前刷题Day 4 morning

    考场思路: 倒着算就是 可以对一个数-1 可以合并两个数 可以证明只有0和0才能执行合并操作 然后模拟 #include<cstdio> #include<iostream> ...