dom4j解析XML的CURD操作
在开发JavaWeb项目中通常是利用XML配置文件来提高应用程序的访问效率,而在配置XML的同时,更多时候是对XML进行解析。
一、解析XML配置文件有两种机制:
DOM和SAX的机制:
DOM是将整个XML文件读到内容,形成一个倒状的树形结构。
SAX是一个一个的将XML文件中的元素加载的内存,不会形成一个倒状的树形结构。
常用dom4j的api: 主要使用到SAXReader类
SAXReader:表示DOM4J解析器
saxReader.read():加载需要解析的xml文件,返回document对象代表整个xml文件
document.getRootElement():取得根元素
element.getName():取得元素名称
rootElement.elements():取得该元素下的子元素的集合
element.element("车牌"):导航到"车牌"元素
element.getText():获取得某个元素的文本内容
element.elementText("产地"):导航到"产地"元素并获取该元素的文本内容
e.element("车牌").attributeValue("出产时间"):导航到"车牌"元素并获取该元素的“出产时间”属性的值
element.addElement("单价").setText("15");创建新元素并设置该元素的文本内容
二、在解析dom4j在XML配置文件的过程也需要使用到xpath技术
xpath技术:
在xml文件中快速定义符合xpath条件/路径的唯一/所有的元素
document.selectNodes(xpath);[取得所有的]
document.selectSingleNode(xpath);[取得单个的]
以下是dom4j解析XML文件的curd操作代码:
package cn.test.java.dom4j; import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.util.List; 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;
import org.junit.Test; public class XMLcurd {
//创建document对象
private Document getDocument() throws DocumentException {
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File("src/cn/test/java/dom4j/test.xml"));
return document;
}
//将document写入到指定的XML
private void writerToXML(Document document)
throws UnsupportedEncodingException, FileNotFoundException,
IOException {
//方法一:写入xml文件中包含有中文时
//设置输出格式
OutputFormat outputFormat = OutputFormat.createPrettyPrint();
//设置输出编码方式
outputFormat.setEncoding("UTF-8");
//将内存中的字节流转换为字符流
Writer writer = new OutputStreamWriter(new FileOutputStream("src/cn/test/java/dom4j/test.xml"),"UTF-8");
//构造XMLWriter用于写入XML文件
XMLWriter xmlWriter = new XMLWriter(writer,outputFormat);
xmlWriter.write(document);
xmlWriter.close();
} //XML的增加操作
@Test
public void Create() throws Exception{
Document document = this.getDocument();
Element rootElement = document.getRootElement();
Element firstElement = (Element) rootElement.elements().get(0);
firstElement.addElement("单价").setText("15");//在内存中(字节存储)
writerToXML(document);
}
//XML的修改操作
@Test
public void upDate() throws Exception{
Document document = this.getDocument();
Element rootElement = document.getRootElement();
Element secondElement = (Element) rootElement.elements().get(1);
secondElement.element("产地").setText("深圳");
writerToXML(document); }
//XML的删除操作
@Test
public void delete() throws Exception{
Document document = this.getDocument();
Element rootElement = document.getRootElement();
List<Element> elementList = rootElement.elements();
for(Element e:elementList){
Element bandElement = e.element("车牌");
e.remove(bandElement);
}
writerToXML(document);
}
}
dom4j解析XML的CURD操作的更多相关文章
- java使用dom4j对XML进行CURD操作
要使用dom4j必须导入两个jar包: dom4j-1.6.1.jar jaxen-1.1-beta-6.jar 使用dom4j新建一个XML文件: /** * 利用dom4j完成新增一个xml文件 ...
- java中采用dom4j解析xml文件
一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...
- 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...
- 用dom4j解析xml文件并执行增删改查操作
转自:https://www.aliyun.com/jiaocheng/1339446.html xml文件: <?xml version="1.0" encoding=&q ...
- Java进阶(二十七)使用Dom4j解析XML文件
使用Dom4j解析XML文件 写在前面的话 由于论文实验要求,需要实现操作XML文档,为此想到了dom4j这个工具,使用之后深感受益.在此分享给大家,以此共勉. 注:本文转载自http://blog. ...
- 转:在java中使用dom4j解析xml
JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...
- 使用dom4j解析XML文档
dom4j的包开源包,不属于JDK里面,在myeclipse中要单独导入在项目中,这里不累赘了 做这个过程,很慢,因为很多方法没用过不熟悉,自己得去查帮助文档,而且还得去试,因为没有中文版,英文翻译不 ...
- 【收藏用】--切勿转载JAVA 使用Dom4j 解析XML
原帖地址 : http://blog.csdn.NET/yyywyr/article/details/38359049 解析XML的方式有很多,本文介绍使用dom4j解析xml. 1.环境准备 (1) ...
- java dom4j解析xml实例(2)
java利用dom4j解析xml 需要的jar包: dom4j官方网站在 http://www.dom4j.org/ 下载dom4j-1.6.1.zip 解开后有两个包,仅操作XML文档的话把dom4 ...
随机推荐
- CentOs7下systemd管理知识要点
centOs7的一个巨大的变动就是用systemd取代了原来的System V init.systemd是一个完整的软件包,安装完成后有很多物理文件组成,大致分布为,配置文件位于/etc/system ...
- NET基础课--Linq第三讲
LINQ 1.查询操作符 (1)源起 .net的设计者在IEnumerable<T>等接口基础之上定义了一系列的扩展方法来方便用户操作集合对象,这些扩展方法构成了LINQ的查询操作符 (2 ...
- 修改 “嗨加游-Prefix.pch” 或者 “嗨加游-Info.plist ” 方法
如果要更改Info.plist与Prefix.pch文件实际路径,也就是实际文件的位置(不是在工程中的组织路径),需要到Build Settings中修改对应的配置,不然工程就找不到对应的Info.p ...
- OD调试2---TraceMe
OD调试2---TraceMe 拆解一个Windows程序要比拆解一个DOS程序容易得多,因为在Windows中,只要API函数被使用,想对寻找蛛丝马迹的人隐藏一些东西是比较困难的.因此分析一个程序, ...
- NPOI通过DataTable导出和读取Excel
Excel导入及导出问题产生: 从接触.net到现在一直在维护一个DataTable导出到Excel的类,时不时还会维护一个导入类.以下是时不时就会出现的问题: 导出问题: 如果是asp.net,你得 ...
- Struts2之Action基础与配置
Action基础 Action是什么 在Struts2中,一个Action类代表一次请求或调用,每个请求的动作都对应于一个相应的Action类,一个Action类是一个独立的工作单元.也就是,用户的每 ...
- ongl三种符号的使用
1.#符号 访问非根对象属性,由于Struts2中值栈被视为根对象,所以访问其他非根对象时,需要加#前缀.实际上,#相当于ActionContext.getContext(): 用于过滤和投影(pro ...
- x^2+y^2=N的整数解?
本文系转载:http://blog.sina.com.cn/s/blog_a661ecd50101cv41.html 我们先研究这个问题的一部分:哪些素数是两平方数之和?为什么我们先研究素数,有个很重 ...
- (原)error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5577534.html 在debug下使用intel的mkl库时(release下无此问题),莫名的出现 ...
- easyui page添加文本,js验证码
onLoadSuccess: function (db) { //db是后台数据的返回结果集 $.ajax({ url: "AjaxSource/Buex.ashx", data: ...