1.什么是dom4j

dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在IBM developerWorks上面还可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,所以可以知道dom4j无论在哪个方面都是非常出色的。如今可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这已经是必须使用的jar包, Hibernate也用它来读写配置文件。

更多详情》》》》》

2.如何使用dom4j解析xml文档

(1)在使用dom4j解析xml文档时,首先要到了dom4j的Jar包。

在工作目录下新建一个lib文件夹,把dom4j-1.6.1.jar包拷贝到lib文件夹下,选中dom4j-1.6.1.jar然后build Path就加载好jar包了。

具体操作:代码更直观

需要解析的xml文件(book.xml)

<?xml version="1.0" encoding="UTF-8"?>

<书架>
<书>
<书名>java程序设计</书名>
<作者>张三</作者>
<售价>309元</售价>
<售价>45元</售价>
<出版社>南京大学出版社</出版社>
</书>
<书>
<书名>C语言程序设计</书名>
<作者>李四</作者>
<售价>40元</售价>
<出版社>北京大学出版社</出版社>
</书>
</书架>
package DOM4J;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.OutputStreamWriter;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
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 Dom4jDemo {
@Test
//用dom4j读取xml文档
public void read() throws Exception {
//获得DOCUMENT对象
SAXReader reader = new SAXReader();
//获取需要解析文档的路径
Document document = reader.read(new File("src/book.xml"));
Element root = document.getRootElement();
List list = root.elements("书");
String bookname = ((Element) list.get(1)).element("书名").getText();
System.out.println(bookname);
}
@Test
//用dom4j添加节点
public void add() throws Exception {
//获得DOCUMENT对象
SAXReader reader = new SAXReader();
//获取需要解析文档的路径
Document document = reader.read(new File("src/book.xml"));
Element root = document.getRootElement();
List list = root.elements("书");
((Element) list.get(1)).addElement("出版社").setText("北京大学出版社");
//更新内存
// OutputFormat format=OutputFormat.createCompactFormat();//紧凑xml内容
OutputFormat format=OutputFormat.createPrettyPrint();//漂亮xml内容
format.setEncoding("UTF-8"); XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
writer.write(document);
writer.close();
} @Test
//用dom4j在指点位置添加节点
public void add1() throws Exception {
//获得DOCUMENT对象
SAXReader reader = new SAXReader();
//获取需要解析文档的路径
Document document = reader.read(new File("src/book.xml"));
Element root = document.getRootElement().element("书");
List<Element> list =root.elements();
Element price=DocumentHelper.createElement("售价");
price.setText("309元");
list.add(2, price);
//更新内存
// OutputFormat format=OutputFormat.createCompactFormat();//紧凑xml内容
OutputFormat format=OutputFormat.createPrettyPrint();//漂亮xml内容
format.setEncoding("UTF-8");
//使用文件输入流
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
writer.write(document);
writer.close();
}
@Test
//用dom4j在指点位置添加节点
public void delete() throws Exception {
//获得DOCUMENT对象
SAXReader reader = new SAXReader();
//获取需要解析文档的路径
Document document = reader.read(new File("src/book.xml"));
Element root = document.getRootElement().element("书");
List<Element> list =root.elements();
for (Element element : list) {
System.out.println(element.getName());
if(element.getName()=="出版社"){
element.getParent().remove(element);
}
}
//更新内存
// OutputFormat format=OutputFormat.createCompactFormat();//紧凑xml内容
OutputFormat format=OutputFormat.createPrettyPrint();//漂亮xml内容
format.setEncoding("UTF-8");
//使用文件输入流
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
writer.write(document);
writer.close();
} @Test
//用dom4j更新数据
public void update() throws Exception {
//获得DOCUMENT对象
SAXReader reader = new SAXReader();
//获取需要解析文档的路径
Document document = reader.read(new File("src/book.xml"));
Element root = document.getRootElement().element("书");
List<Element> list =root.elements();
for (Element element : list) {
if(element.getName()=="出版社"){
element.setText("南京大学出版社");
}
}
//更新内存
// OutputFormat format=OutputFormat.createCompactFormat();//紧凑xml内容
OutputFormat format=OutputFormat.createPrettyPrint();//漂亮xml内容
format.setEncoding("UTF-8");
//使用文件输入流
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
writer.write(document);
writer.close();
}
}

javaweb dom4j解析xml文档的更多相关文章

  1. 使用dom4j解析XML文档

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

  2. DOM4J解析XML文档

    Tip:DOM4J解析XML文档 Dom4j是一个简单.灵活的开放源代码的库.Dom4j是由早期开发JDOM的人分离出来而后独立开发的.与JDOM不同的是,dom4j使用接口和抽象基类,虽然Dom4j ...

  3. 使用DOM4J解析XML文档,以及使用XPath提取XML文档

    使用DOM4J解析XML文档 需要首先下载DOM4J工具包.这是个第三方工具包 在使用DOM4J解析的时候需要导入 DOM4J的JAR包 下载DOM4J工具包->在MyEclipse中新建lib ...

  4. 源生API解析XML文档与dom4j解析XML文档

    一.XML语言 XML是一种可扩展的标记语言,是一种强类型的语言,类似HTML(超文本标记语言,是一种弱类型的语言).XML是一种通用的数据交换格式(关系型数据库),综上所诉:XML可以传输数据,也可 ...

  5. 【学习笔记】关于DOM4J:使用DOM4J解析XML文档

    一.概述 DOM4J是一个易用的.开源的库,用于XML.XPath和XSLT中.采用了Java集合框架并完全支持DOM.SAX.和JAXP. DOM4J最大的特色是使用大量的接口,主要接口都在org. ...

  6. dom4j解析xml文档全面介绍

    一.dom4j介绍 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点, ...

  7. dom4j解析xml文档&保存数据的乱码问题

    package itcast.dom4j; import java.io.File; import java.io.FileOutputStream; import java.io.FileWrite ...

  8. XML案例(使用DOM4J解析XML文档)

    1.Demo1.java package cn.itcast.dom4j; import java.io.File;import java.io.FileOutputStream;import jav ...

  9. Strus2第一次课:dom4j解析xml文档

    xml文本标记语言: 常用于交换数据:独立于操作系统.编程语言数据存储:xml数据配置:灵活性强,可读性高可以使用css样式改变xml样式 xml解析技术:dom解析xml技术: sax解析xml技术 ...

随机推荐

  1. Eclipse自动生成 get/set

    步骤一:在声明的数据域中按Ctrl+1: 步骤二:点击最后一个选项Create getter and setter,在弹出的对话框中点击确定: 在介绍另外一个方法: 步骤一:声明完类的数据域之后,输入 ...

  2. nagios 监控shell脚本

    线上应用shell脚本 参考链接:http://os.51cto.com/art/201301/376725.htm 0--各方面都正常,检查成功完成. 1--资源处于警告状态.某个地方不太妙. 2- ...

  3. Java-Runoob-高级教程:Java 9 新特性

    ylbtech-Java-Runoob-高级教程:Java 9 新特性 1.返回顶部 1. Java 9 新特性 Java 9 发布于 2017 年 9 月 22 日,带来了很多新特性,其中最主要的变 ...

  4. php图像处理函数imagecopyresampled

    语法 bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , i ...

  5. 基于Nfs和Samba的Lamp环境实现

    一 系统环境二 网络文件系统与web环境的结合三 搭建lamp环境四 实现nfs服务五 实现samba服务六 实现效果 一 系统环境 系统平台:CentOS release 6.8 (Final) L ...

  6. getpass密码隐藏

    使用getpass模块对输入的字符进行隐藏输入 #-*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import getpass u ...

  7. 实用webpack-dev-server

    webpack-dev-server的作用 文件作出改动之后,保存,立即开始编译文件 编译后的文件是保存在内存中的,在项目文件夹中看不到编译后的文件 编译完成之后立即自动刷新浏览器 测试webpack ...

  8. fiddler代理hosts配置

    1 需求背景 fidder开启后,C:\Windows\System32\drivers\etc\hosts配置失效问题:fiddler本身代理hosts配置表,修改后,可以省去在手机等代理使用者的系 ...

  9. Linux系统SCSI磁盘扫描机制解析及命令实例(转)

    转载请在文首保留原文出处:EMC中文支持论坛 介绍 Linux系统扫描SCSI磁盘有几种方式?Linux新增LUN之后,能否不重启主机就认出设备?如果安装了PowerPath,动态添加/删除LUN的命 ...

  10. SqlServer——临时表

    1.表的类型: SqlServer数据库中分为两个表:永久表.临时表:通过表名的前缀区分. 永久表:与物理文件.C# 中的静态类 类似,任何用户均可对其执行操作并且相互影响: 临时表:简单的说就是使用 ...