java基础75 xpth技术(网页知识)
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技术(网页知识)的更多相关文章
- Java基础-零拷贝技术应用案例
Java基础-零拷贝技术应用案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 零拷贝技术在Hadoop生态圈中很多组件得到应用,典型的比如kafka组件,它就很成功的应用了零拷贝 ...
- Java基础96 ajax技术的使用
本文知识点(目录): 1.ajax的概念 2.使用ajax技术获取服务端的数据_实例 3.使用ajax技术检查用户名是否已存在_实例 4.使用ajax技术验证登录页面的用户名和密码_实例 ...
- Java基础之IO技术(一)
---恢复内容开始--- Java基础中的IO技术可谓是非常重要,俗话说的好,万丈高楼起于垒土之间.所以学习Java一定要把基础学好,今天我们来学习IO技术的基础. IO无非就是输入与输出,而其中处理 ...
- java基础56 HTML5的标签知识(网页知识)
本文知识点(目录): 1.html常用标签 2.html实体标签 3.html媒体标签 4.html超链接标签 5.html图片标签 6.html标个标签 7.html框 ...
- 重学JAVA基础(八):锁的基本知识
1.线程状态 如上图,当我们新建一个线程,并start后,其实不一定会马上执行,因为只有操作系统调度了我们的线程,才能真正进行执行,而操作系统也随时可以运行其他线程,这时线程又回到可运行状态.这个过程 ...
- java 基础之 反射技术
1. java代码 在 java 语言中最核心的就是代码的运行, 按照面向对象的思想,在调用java代码时往往需要先创建对象,再调用方法, 而写在方法中的即所谓的java 代码 一段java代码在程序 ...
- Java基础——关于jar包的知识
在学习jar包之前,要先弄懂Java包,以及关于Java包的相关概念. 一.包 为了更好地组织类,Java提供了包机制.包是类的容器,用于分隔类名空间.如果没有指定包名,所有的示例都属于一个默认的无名 ...
- Java基础笔记之String相关知识
(二)String Sring 被声明为 final ,因此不可被继承. String的不可变性: 看String的定义(java9版本): public final class String imp ...
- JAVA基础之会话技术-Cookie及Session
至此,学习Servlet三个域对象:ServletContext(web项目).request(一次请求).Session(一个客户端)!均有相同的方法! 从用户开始打开浏览器进行操作,便开始了一次会 ...
随机推荐
- kibana5画图
先展示一下我的Dashboard 1.Markdown文本 2.日志条数统计 3.访问IP前10柱状图 4.访问IP前10饼图 5.状态码饼图 6.状态码趋势图 7.状态码柱状叠加图 8.流量趋势图 ...
- Activity的setResult方法
Activity的setResult方法http://blog.csdn.net/dinglin_87/article/details/8970144 调用setResult()方法必须在finish ...
- laravel DB listen 回调追踪产生 sql 语句的代码
\DB::listen(function (QueryExecuted $sql) { \Log::info($sql->sql); \Log::info((new \Exception())- ...
- servlet与tomcat的关系
1.4 Tomcat简介 学习Servlet技术,首先需要有一个Servlet运行环境,也就是需要有一个Servlet容器,本书采用的是Tomcat. Tomcat是一个免费的开放源代码的Serv ...
- k-Nearest Neighbor algorithm 思想
转载 KNN--K最邻近算法思想 KNN算法的决策过程 k-Nearest Neighbor algorithm 上图中,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?如果K=3, ...
- SystemV-IPC
这里记录的三种SystemV-IPC包括(消息队列,信号量以及共享内存) 1:标识符和键值 键值(key_t) : IPC结构的外部名(所谓外部名就是各用户进程可获得并操作的,通过它使用XXXget获 ...
- range循环
for i in range(10): #特殊写法,从0开始,步长为1,最大值小于10 print("loop",i) print("=========") f ...
- 自动化工具制作PASCAL VOC 数据集
自动化工具制作PASCAL VOC 数据集 1. VOC的格式 VOC主要有三个重要的文件夹:Annotations.ImageSets和JPEGImages JPEGImages 文件夹 该文件 ...
- 3 Kafka两个版本在Zookeeper的元数据存储
0.8 [consumers, admin, config, controller, brokers, controller_epoch] 这些节点都归于谁管理 consumers: 0.8版本的客户 ...
- 2017 清北济南考前刷题Day 4 morning
考场思路: 倒着算就是 可以对一个数-1 可以合并两个数 可以证明只有0和0才能执行合并操作 然后模拟 #include<cstdio> #include<iostream> ...