在开发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操作的更多相关文章

  1. java使用dom4j对XML进行CURD操作

    要使用dom4j必须导入两个jar包: dom4j-1.6.1.jar jaxen-1.1-beta-6.jar 使用dom4j新建一个XML文件: /** * 利用dom4j完成新增一个xml文件 ...

  2. java中采用dom4j解析xml文件

    一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...

  3. 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

    一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...

  4. 用dom4j解析xml文件并执行增删改查操作

    转自:https://www.aliyun.com/jiaocheng/1339446.html xml文件: <?xml version="1.0" encoding=&q ...

  5. Java进阶(二十七)使用Dom4j解析XML文件

    使用Dom4j解析XML文件 写在前面的话 由于论文实验要求,需要实现操作XML文档,为此想到了dom4j这个工具,使用之后深感受益.在此分享给大家,以此共勉. 注:本文转载自http://blog. ...

  6. 转:在java中使用dom4j解析xml

    JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...

  7. 使用dom4j解析XML文档

    dom4j的包开源包,不属于JDK里面,在myeclipse中要单独导入在项目中,这里不累赘了 做这个过程,很慢,因为很多方法没用过不熟悉,自己得去查帮助文档,而且还得去试,因为没有中文版,英文翻译不 ...

  8. 【收藏用】--切勿转载JAVA 使用Dom4j 解析XML

    原帖地址 : http://blog.csdn.NET/yyywyr/article/details/38359049 解析XML的方式有很多,本文介绍使用dom4j解析xml. 1.环境准备 (1) ...

  9. java dom4j解析xml实例(2)

    java利用dom4j解析xml 需要的jar包: dom4j官方网站在 http://www.dom4j.org/ 下载dom4j-1.6.1.zip 解开后有两个包,仅操作XML文档的话把dom4 ...

随机推荐

  1. QtXlsxWriter

    Code Issues26 Pull requests2   Pulse Graphs HTTPS clone URL You can clone with HTTPS orSubversion. C ...

  2. Hacker(九)----黑客攻防前准备1

    黑客在入侵Internet中其他电脑之前,需要做一系列准备工作,包括在电脑中安装虚拟机.准备常用的工具软件及掌握常用的攻击方法. 一.在计算机中搭建虚拟环境 无论时攻击还是训练,黑客都不会拿实体计算机 ...

  3. 移动开发(webapp)过程中的小细节总结

    1.阻止旋转屏幕时自动调整字体大小 html, body, form, fieldset, p, div, h1, h2, h3, h4, h5, h6 { -webkit-text-size-adj ...

  4. JQuery 之事件中的 ----- hover 与 onmouseover 、onmouseout 联系

    hover([over,]out) 一个模仿悬停事件(鼠标移动到一个对象上面及移出这个对象)的方法.这是一个自定义的方法,它为频繁使用的任务提供了一种“保持在其中”的状态. 当鼠标移动到一个匹配的元素 ...

  5. SQL日期形式转换

    在SQL Server中,有时存储在数据库中的日期格式和我们需要显示在页面上的格式不相同,我们需要转化成需要的格式. 特在此总结了一下常用的日期格式. --当前时间 SELECT GETDATE(); ...

  6. 链表中倒数第K个节点

    问题描述: 找出链表中倒数第K个节点 思路分析: 用两个指针,一前一后,保持k个距离,前面的指针移动到末尾,后面的指针就刚好直到第k个节点, 要考虑到k为0,倒数第k个节点不存在的情况. 参考代码: ...

  7. Qt模型/视图、委托

    MVC视图和控制器对象相结合,其结果是模型/视图结构,仍然分离了数据与呈现给用户的方式,使得它可以在几个不同的视图中显示相同的数据,并实现新类型的视图而无需改变底层的数据结构.为了灵活的处理数据输入, ...

  8. [原]用C#模拟实现扑克牌发牌、排序程序。

    (1)52张扑克牌,四种花色(红桃.黑桃.方块和梅花),随机发牌给四个人. (2)最后将四个人的扑克牌包括花色打印在控制台上. 其中:     花色和点数用枚举类型实现     每张扑克牌用结构实 ...

  9. Constructing Roads(1102 最小生成树 prim)

    Constructing Roads Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  10. Bulk-Only传输协议 UFI命令块规范

    USB设备分为5大类,即显示器.通信设备.音频设备.人机输入和海量存储.通常所用的U盘.移动硬盘均属于海量存储类.海量存储类的规范中包括4个独立的子规范,即CBI传输.Bulk-Only传输.ATA命 ...