【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
一、简介
1、使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作。
2、去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种。
3、学习XPath语法。
二、XPath语法
1、基本的XPath语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝对路径。

2、如果路径以双斜线 // 开头, 则表示选择文档中所有满足双斜线//之后规则的元素(无论层级关系)

3、星号 * 表示选择所有由星号之前的路径所定位的元素



4、方块号里的表达式可以进一步的指定元素, 其中数字表示元素在选择集里的位置, 而last()函数则表示选择集中的最后一个元素.


5、@符号用于选择属性





6、属性的值可以被用来作为选择的准则, normalize-space函数删除了前部和尾部的空格, 并且把连续的空格串替换为一个单一的空格


7.count()函数可以计数所选元素的个数

8.name()函数返回元素的名称, start-with()函数在该函数的第一个参数字符串是以第二个参数字符开始的情况返回true, contains()函数当其第一个字符串参数包含有第二个字符串参数时返回true.
方法:name()函数返回元素的名称, start-with()函数在该函数的第一个参数字符串是以第二个参数字符开始的情况返回true, contains()函数当其第一个字符串参数包含有第二个字符串参数时返回true.





 package p00.domain;
 public class Book {
     public String title;
     public double price;
     public String id;
     public String getId()
     {
     return id;
     }
     public void setId(String id)
     {
     this.id=id;
     }
     public String getTitle()
     {
     return title;
     }
     public double getPrice()
     {
     return price;
     }
     public void setTitle(String title)
     {
     this.title=title;
     }
     public void setPrice(double price)
     {
     this.price=price;
     }
     public String toString()
     {
     return "图书ISBN为:"+id+"   书名为:"+title+"    价格为:"+price;
     }
 }
写入新文档的公共方法:
/**
* 将得到的xml文档写入新的xml文档
* @param document
* @throws Exception
*/
private static void writeToXMLDocument(Document document) throws Exception {
FileOutputStream fos=new FileOutputStream(new File("xmldata/newbooks.xml"));
OutputStreamWriter osw=new OutputStreamWriter(fos,"utf-8");
/**
*使用这种写法才不会产生乱码
*/
XMLWriter writer=new XMLWriter(osw);
writer.write(document);
writer.close();
}
books.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book id="book1">
<title>JAVA编程思想</title>
<price>80.00</price>
</book>
<book id="book2">
<title>JAVA核心技术</title>
<price>100.00</price>
</book>
</books>
2、查询
功能:查找id为book2的元素的title子元素并将其值显示出来
/**
* 显示指定的子元素值
* @param document
*/
private static void showDesignatedElementValue(Document document) {
String pattern="//book[@id='book2']/title";
Node node=document.selectSingleNode(pattern);
String title=node.getText();
System.out.println(title);
}
运行效果:

3、修改。
功能:修改id为book2的元素的子元素title使其为JAVA Core。
/**
* 完成修改功能。
* @param document
*/
private static void updateDesignatedElementValue(Document document) {
String pattern="//book[@id='book2']/title";
Node node=document.selectSingleNode(pattern);
node.setText("JAVA Core");
}
运行效果:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book id="book1">
<title>JAVA编程思想</title>
<price>80.00</price>
</book>
<book id="book2">
<title>JAVA Core</title>
<price>100.00</price>
</book>
</books>
4、删除
功能:删除id为book2的元素
/**
* 完成删除功能
* @param document
*/
private static void deleteDesignatedElement(Document document) {
String pattern="//book[@id='book2']";
Node book=document.selectSingleNode(pattern);
Element parrent=book.getParent();
parrent.remove(book);
}
效果图:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book id="book1">
<title>JAVA编程思想</title>
<price>80.00</price>
</book> </books>
四、总结
很明显,代码量又大大减少了,使用XPath解析XML文件比起单纯使用dom4j解析XML文件效率更高,实用性很强,应当重点注意,尽量使用该方法解析XML文件。
【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】的更多相关文章
- 转:在java中使用dom4j解析xml
		
JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...
 - Android平台中实现对XML的三种解析方式
		
本文介绍在Android平台中实现对XML的三种解析方式. XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能. 在 ...
 - Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密
		
Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密 二.利用加密算法DES实现java代码加密 传统的C/C++自动带有保护机制,但java不同,只要 ...
 - [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈
		
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
 - java中采用dom4j解析xml文件
		
一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...
 - java中利用dom4j解析XML文件
		
官网下载Dom4j地址:https://dom4j.github.io/ 注意:使用Dom4j开发,需下载dom4j相应的jar文件 题目:后台利用dom4j解析student.xml文件,并返回Li ...
 - 【JAVA与DOM4J实现对XML文档的CRUD操作】
		
一.简介 1.网上下载DOM4J 1.6.1压缩包,解压开之后,发现几个目录和一个jar文件,jar文件是必须的文件其它目录: docs目录:帮助文档的目录,单击index.html: Quick s ...
 - JDOM方法实现对XML文件的解析
		
首先要下载JDOM.jar包,下载地址:http://download.csdn.net/detail/ww6055/8880371 下载到JDOM.jar包之后导入到工程中去. 实例程序: book ...
 - 用DOM4J包实现对xml文件按属性分离。
		
转自本人博客:http://www.xgezhang.com/dom4j_xml_separata.html dom4j是一个Java的XML API.类似于jdom.用来读写XML文件的. dom4 ...
 
随机推荐
- Linux中的动态库和静态库(.a/.la/.so/.o)
			
Linux中的动态库和静态库(.a/.la/.so/.o) Linux中的动态库和静态库(.a/.la/.so/.o) C/C++程序编译的过程 .o文件(目标文件) 创建atoi.o 使用atoi. ...
 - hdu1054   树形dp&&二分图
			
B - Strategic Game Time Limit:10000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
 - zabbix之MySQL数据库的安装
			
转载自:http://www.ttlsa.com/mysql/install-mysql5_6/ 启动MySQL并制定套接字 mysql -u user -ppassword -S 指定socket路 ...
 - 11.8---维护x的秩(CC150)
			
思路:比较easy.就是借助hashset让他有序然后就能够比较节省时间了. 答案: public static int[] getRankOfNumber(int[] a, int n){ int[ ...
 - ubuntu add application to launcher
			
eg. add sublime text to launcher so as to be found by launcher, docky, etc. add a file sudo gedit /u ...
 - centos rpmforge repo
			
在这里找到合适的rpm包:http://pkgs.repoforge.org/rpmforge-release/ 下载 wget http://pkgs.repoforge.org/rpmforge- ...
 - php返回json数组
			
1.后端 //处理json数组中文问题 function arrayRecursive(&$array, $function, $apply_to_keys_also = false) { s ...
 - JavaScript——Window对象
			
1.serTimeout()和setinterval()可用于注册在指定的时间之后单词或者重复调用的函数. 2.window对象的location属性引用的是Location对象,表示该窗口当前显示的 ...
 - C#之文本操作
			
[转载]C#文件操作大全(SamWang) 文件与文件夹操作主要用到以下几个类: 1.File类: 提供用于创建.复制.删除.移动和打开文件的静态方法,并协助创建 FileStream 对象. msd ...
 - QPS计算方法
			
2016年3月14日 13:55:39 星期一 好久没写文章了, 神烦.....