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(一个客户端)!均有相同的方法! 从用户开始打开浏览器进行操作,便开始了一次会 ...
随机推荐
- BZOJ 4321 queue2
4321: queue2 Description n 个沙茶,被编号 1~n.排完队之后,每个沙茶希望,自己的相邻的两人只要无一个人的编号和自己的编号相差为 1(+1 或-1)就行: 现在想知道,存在 ...
- fzyzojP3618 -- [校内训练-互测20180412]士兵的游戏
二分图匈牙利也可以 判断必须点就看能不能通过偶数长度的增广路翻过去 代码: (最后一个点4s多才行,,,卡不过算了) 开始边数写少了RE,应该是4*N*N M-R随手开了一堆int?都要是long l ...
- 关于[x/y]一些小想法
[x/y],即x除以y下取整 (不会LATEX) 1.对于给定的x,对于所有的1<=y<=x, [x/y]一共有√x种取值. 证明: 对于y<=√x,y有根号种,所以值最多根号种.对 ...
- 关于.Net开源并跨平台的思考
开源的意义: 关于开源,我个人觉得有两个提高(勿喷). 一方面开源提高了生产力,另一方面开源也是信任的一种体现.为什么这么说呢,在当下的互联网时代,开源是一种核心价值观.人与人沟通交流合作之下,降低成 ...
- Docker入门与应用系列(四)网络管理
一.Docker的五种网络模式 在使用docker run创建docker容器时,可以用--net选项指定容器的网络模式,Docker有以下5种网络模式: 1. bridge模式 使用docker r ...
- solr基础使用概述
概述:solr 作为搜索引擎系统,它应该包含两部分内容,分别是:索引系统 和 搜索系统. 索引系统 它主要负责将外部不同数据源的数据转换为 solr 格式规范的数据格式(我们称之为:SolrInput ...
- bzoj千题计划140:bzoj4519: [Cqoi2016]不同的最小割
http://www.lydsy.com/JudgeOnline/problem.php?id=4519 最小割树 #include<queue> #include<cstdio&g ...
- bzoj千题计划139:bzoj2229: [Zjoi2011]最小割
http://www.lydsy.com/JudgeOnline/problem.php?id=2229 最小割树介绍:http://blog.csdn.net/jyxjyx27/article/de ...
- 洛谷 P3382 【模板】三分法
https://www.luogu.org/problem/show?pid=3382 题目描述 如题,给出一个N次函数,保证在范围[l,r]内存在一点x,使得[l,x]上单调增,[x,r]上单调减. ...
- 蓝桥杯 地宫寻宝 DFS 动态规划
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstdio> #include <cstdl ...