xpath应用
- import java.io.File;
- import java.io.FileOutputStream;
- import org.dom4j.Document;
- import org.dom4j.Element;
- import org.dom4j.io.OutputFormat;
- import org.dom4j.io.SAXReader;
- import org.dom4j.io.XMLWriter;
- /**
- * 第一个xpath程序
- * @author APPle
- *
- */
- public class Demo1 {
- public static void main(String[] args) throws Exception{
- /**
- * 需求: 删除id值为2的学生标签
- */
- Document doc = new SAXReader().read(new File("e:/student.xml"));
- //1.查询id为2的学生标签
- //使用xpath技术
- Element stuElem = (Element)doc.selectSingleNode("//Student[@id='2']");
- //2.删除标签
- stuElem.detach();
- //3.写出xml文件
- FileOutputStream out = new FileOutputStream("e:/student.xml");
- OutputFormat format = OutputFormat.createPrettyPrint();
- format.setEncoding("utf-8");
- XMLWriter writer = new XMLWriter(out,format);
- writer.write(doc);
- writer.close();
- }
- }
- import java.io.File;
- import java.util.List;
- import org.dom4j.Document;
- import org.dom4j.Node;
- import org.dom4j.io.SAXReader;
- /**
- * 学习xPath表达式语法
- * @author APPle
- *
- */
- 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/name";
- xpath = "//name";
- /**
- * 3. * 通配符 表示匹配所有元素
- */
- xpath = "/contactList/*"; //根标签contactList下的所有子标签
- xpath = "/contactList//*";//根标签contactList下的所有标签(不分层次结构)
- /**
- * 4. [] 条件 表示选择什么条件下的元素
- */
- //带有id属性的contact标签
- xpath = "//contact[@id]";
- //第二个的contact标签
- xpath = "//contact[2]";
- //选择最后一个contact标签
- xpath = "//contact[last()]";
- /**
- * 5. @ 属性 表示选择属性节点
- */
- xpath = "//@id"; //选择id属性节点对象,返回的是Attribute对象
- xpath = "//contact[not(@id)]";//选择不包含id属性的contact标签节点
- xpath = "//contact[@id='002']";//选择id属性值为002的contact标签
- xpath = "//contact[@id='001' and @name='eric']";//选择id属性值为001,且name属性为eric的contact标签
- /**
- *6. text() 表示选择文本内容
- */
- //选择name标签下的文本内容,返回Text对象
- xpath = "//name/text()";
- xpath = "//contact/name[text()='张三']";//选择姓名为张三的name标签
- List<Node> list = doc.selectNodes(xpath);
- for (Node node : list) {
- System.out.println(node);
- }
- }
- }
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.InputStreamReader;
- import org.dom4j.Document;
- import org.dom4j.Element;
- import org.dom4j.io.SAXReader;
- /**
- * xpath案例: 模拟用户登录效果
- * @author APPle
- *
- */
- public class Demo3 {
- 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文件中找到一个
- //name属性值为‘用户输入’,且password属性值为‘用户输入’的user标签
- Document doc = new SAXReader().read(new File("./src/user.xml"));
- Element userElem = (Element)doc.selectSingleNode("//user[@name='" +name +"' and @password='"+password+"']");
- if(userElem!=null){
- //登录成功
- System.out.println("登录成功");
- }else{
- //登录失败
- System.out.println("登录失败");
- }
- }
- }
- import java.io.File;
- import java.util.Iterator;
- import java.util.List;
- import org.dom4j.Document;
- import org.dom4j.Element;
- import org.dom4j.io.SAXReader;
- /**
- * 使用xpath技术读取一个规范的html文档
- * @author APPle
- *
- */
- public class Demo4 {
- public static void main(String[] args) throws Exception{
- Document doc = new SAXReader().read(new File("./src/personList.html"));
- //System.out.println(doc);
- //读取title标签
- Element titleElem = (Element)doc.selectSingleNode("//title");
- String title = titleElem.getText();
- System.out.println(title);
- /**
- * 练习:读取联系人的所有信息
- * 按照以下格式输出:
- * 编号:001 姓名:张三 性别:男 年龄:18 地址:xxxx 电话: xxxx
- * 编号:002 姓名:李四 性别:女 年龄:20 地址:xxxx 电话: xxxx
- * ......
- */
- //1.读取出所有tbody中的tr标签
- List<Element> list = (List<Element>)doc.selectNodes("//tbody/tr");
- //2.遍历
- for (Element elem : list) {
- //编号
- //String id = ((Element)elem.elements().get(0)).getText();
- String id = elem.selectSingleNode("td[1]").getText();
- //姓名
- String name = ((Element)elem.elements().get(1)).getText();
- //性别
- String gender = ((Element)elem.elements().get(2)).getText();
- //年龄
- String age = ((Element)elem.elements().get(3)).getText();
- //地址
- String address = ((Element)elem.elements().get(4)).getText();
- //电话
- String phone = ((Element)elem.elements().get(5)).getText();
- System.out.println("编号:"+id+"\t姓名:"+name+"\t性别:"+
- gender+"\t年龄:"+
- age+"\t地址:"+address+
- "\t电话:"+phone);
- }
- }
- }
xpath应用的更多相关文章
- xpath提取多个标签下的text
title: xpath提取多个标签下的text author: 青南 date: 2015-01-17 16:01:07 categories: [Python] tags: [xpath,Pyth ...
- C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子)
第一次接触HtmlAgilityPack是在5年前,一些意外,让我从技术部门临时调到销售部门,负责建立一些流程和寻找潜在客户,最后在阿里巴巴找到了很多客户信息,非常全面,刚开始是手动复制到Excel, ...
- 在Java中使用xpath对xml解析
xpath是一门在xml文档中查找信息的语言.xpath用于在XML文档中通过元素和属性进行导航.它的返回值可能是节点,节点集合,文本,以及节点和文本的混合等.在学习本文档之前应该对XML的节点,元素 ...
- XPath 学习二: 语法
XPath 使用路径表达式来选取 XML 文档中的节点或节点集.节点是通过沿着路径 (path) 或者步 (steps) 来选取的. 下面列出了最有用的路径表达式: 表达式 描述 nodename 选 ...
- xpath 学习一: 节点
xpath 中,有七种类型的节点: 元素.属性.文本.命名空间.处理指令.注释.以及根节点 树的根成为文档节点或者根节点. 节点关系: Parent, Children, sibling(同胞), A ...
- Python爬虫利器三之Xpath语法与lxml库的用法
前面我们介绍了 BeautifulSoup 的用法,这个已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法.如果大家对 Beau ...
- 使用python+xpath 获取https://pypi.python.org/pypi/lxml/2.3/的下载链接
使用python+xpath 获取https://pypi.python.org/pypi/lxml/2.3/的下载链接: 使用requests获取html后,分析html中的标签发现所需要的链接在& ...
- 关于robotframework,app,appium的xpath定位问题及常用方法
关于类似的帖子好像很多,但是没有找到具体能帮我解决问题的办法.还是自己深究了好久才基本知道app上面的xpath定位和web上的不同点: 先放一个图: A,先说说不用xpath的场景,一般是用于存在i ...
- Selenium Xpath Tutorials - Identifying xpath for element with examples to use in selenium
Xpath in selenium is close to must required. XPath is element locator and you need to provide xpath ...
- xpath定位中starts-with、contains和text()的用法
starts-with 顾名思义,匹配一个属性开始位置的关键字 contains 匹配一个属性值中包含的字符串 text() 匹配的是显示文本信息,此处也可以用来做定位用 eg //input[sta ...
随机推荐
- 【转】 Ubuntu samba服务器搭建及测试--不错
原文网址:http://blog.csdn.net/longfeey/article/details/5937968 Ubuntu samba服务配置是很不错的文件应用很有学习价值, 这里我主要讲解U ...
- 【中国剩余定理】POJ 1006 & HDU 1370 Biorhythms
题目链接: http://poj.org/problem?id=1006 http://acm.hdu.edu.cn/showproblem.php?pid=1370 题目大意: (X+d)%23=a ...
- Sublime一些设置
很喜欢sublime text 2 总是在新窗口中打开文件,很麻烦,文件打多了,就会出现N多窗口,虽然可以直接打开当前目录可以解决,但有时候查看其它项目中的单个文件,就比较麻烦.百度一直在搜索,无果. ...
- 【用PS3手柄在安卓设备上玩游戏系列】谈安卓游戏对手柄的支持
不同的游戏对于手柄的支持程度是不一样的,对应所需要进行的手柄设置也不尽相同.我没有这样的时间和精力,针对每一款游戏去写博客,但找出不同游戏中的共同点,针对同一类的游戏去写博客,应该是可行的.我把安卓上 ...
- [Design Pattern] Command Pattern 简单案例
Command Pattern, 即命令模式,把一个命令包裹在一个对象里面,将命令对象传递给命令的执行方,属于行为类的设计模式 下面是命令模式的一个简单案例. Stock 代表被操作的对象.Order ...
- F - Power Network - poj 1459(简单最大流)
题目大意:题目说了一大堆,其实都是废话......让人有些不知所云,其实就是给了一些电厂,和一些消费点,然后里面有一些路线什么的,求出消费点可以最多消费的电量是多少. 输入大意: 分析:懂了题意就是一 ...
- mongodb的write concern
mongodb有一个write concern的设置,作用是保障write operation的可靠性.一般是在client driver里设置的,和db.getLastError()方法关系很大 一 ...
- 日积月累:ProguardGui进行jar包代码混淆
前面文章<Proguard进行源代码混淆>讲解过怎么使用Proguard工具对Android的源代码进行混淆的方法(感兴趣的朋友可以访问:http://blog.csdn.net/p106 ...
- win7 无线网络无法启动
开始菜单-运行输入services.msc然后确定!找到WLAN Autoconfig这一项,启动此项服务,一切就OK了
- Event Delivery: The Responder Chain(事件传递,响应链)
当我们设计app的时候,我们很可能想动态的响应事件.例如,触摸一个拥有许多不同对象的屏幕,你要决定给哪个对象一个响应事件,怎么样对象接收到事件. 当一个用户产生事件发生时(如 点击),UIKit产生一 ...