博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
xpath应用
阅读量:5288 次
发布时间:2019-06-14

本文共 5574 字,大约阅读时间需要 18 分钟。

 

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
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
list = (List
)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); } }}

 

转载于:https://www.cnblogs.com/linst/p/5869032.html

你可能感兴趣的文章
java Collections.sort()实现List排序的默认方法和自定义方法
查看>>
小米笔试题(动态规划)
查看>>
μC/OS-III---I笔记8---事件标志
查看>>
Cookie
查看>>
自动化测试---等待
查看>>
Ring3创建事件Ring0设置事件
查看>>
Arcgis Server 10.2默认服务端口号修改方法
查看>>
Oracle8i Internal Services
查看>>
文件系统---- 日志功能
查看>>
项目整合Spring Security后登陆成功后首页采用iframe不能实现功能的小坑
查看>>
一个简单的分布式事务系统的实现(订单系统)
查看>>
Makefile生成多个可执行文件
查看>>
C#导出Excel总结
查看>>
面试题12: 矩阵中的路径
查看>>
正则表达式(Regular Expression)
查看>>
kafka原理
查看>>
List中的set方法和add方法
查看>>
浅入深出Vue:注册
查看>>
JS框架设计之对象扩展一种子模块
查看>>
第一个C#程序
查看>>