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. 【bzoj4520】 Cqoi2016—K远点对

    http://www.lydsy.com/JudgeOnline/problem.php?id=4520 (题目链接) 题意 求平面内第K远点对的距离. Solution 左转题解:jump 细节 刚 ...

  2. 20165218 《网络对抗技术》Exp4 恶意代码分析

    Exp4 恶意代码分析 任务一:系统运行监控 记录分析联网的程序 创建计划任务netstat5218 schtasks /create /TN netstat5218 /sc MINUTE /MO 1 ...

  3. UVA.12716 GCD XOR (暴力枚举 数论GCD)

    UVA.12716 GCD XOR (暴力枚举 数论GCD) 题意分析 题意比较简单,求[1,n]范围内的整数队a,b(a<=b)的个数,使得 gcd(a,b) = a XOR b. 前置技能 ...

  4. 【trie树】【P4551】 最长异或路径

    Description 给定 \(n\) 个点的带边权树,求一条异或和最大的简单路径 Input 第一行是点数 \(n\) 下面 \(n - 1\) 行每行三个整数描述这棵树 Output 输出一个数 ...

  5. BUG1 解决java compiler level does not match the version of the installed java project facet

    因工作的关系,Eclipse开发的Java项目拷来拷去,有时候会报一个很奇怪的错误.明明源码一模一样,为什么项目复制到另一台机器上,就会报“java compiler level does not m ...

  6. Pymongo--极简使用指南

    1.简介及安装 pymongo是Python中用来操作MongoDB的一个库.而MongoDB是一个基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案.其文件存储格式类似于 ...

  7. bzoj千题计划156:bzoj1571: [Usaco2009 Open]滑雪课Ski

    http://www.lydsy.com/JudgeOnline/problem.php?id=1571 DP不一定全部全状态转移 贪心的舍去一些不合法的反而更容易转移 在一定能力范围内,肯定滑雪所需 ...

  8. Redis学习三:Redis数据类型

    一.Redis的五大数据类型 1.String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value.string类型是二进制安 ...

  9. Java并发编程原理与实战四:线程如何中断

    如果你使用过杀毒软件,可能会发现全盘杀毒太耗时间了,这时你如果点击取消杀毒按钮,那么此时你正在中断一个运行的线程. java为我们提供了一种调用interrupt()方法来请求终止线程的方法,下面我们 ...

  10. AspNetPager + GridView + ASP.NET AJAX 分页无刷新实现

    准备资源: AspNetPager 下载网址:http://www.webdiyer.com/download/default.aspx ASP.NET AJAX  下载网址:http://www.a ...