javaweb dom4j解析xml文档

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();
		}
}
时间: 2024-12-25 04:09:45

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

使用dom4j解析XML文档

dom4j的包开源包,不属于JDK里面,在myeclipse中要单独导入在项目中,这里不累赘了 做这个过程,很慢,因为很多方法没用过不熟悉,自己得去查帮助文档,而且还得去试,因为没有中文版,英文翻译不准确,也会导致多个同名的方法理解和用法不同 XML: <?xml version="1.0" encoding="utf-8"?> <students> <student age="25"> <name>

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

一.概述 DOM4J是一个易用的.开源的库,用于XML.XPath和XSLT中.采用了Java集合框架并完全支持DOM.SAX.和JAXP. DOM4J最大的特色是使用大量的接口,主要接口都在org.dom4j这个包里定义: 二.DOM4J的接口 Attribute:定义了XML的属性: Branch:是能够包含子节点的节点,如XML元素(Element)和文档(Documents)定义了一个公共的行为: CDATA:定义了XML的CDATA区域: CharacterData:是一个标识接口,标

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

一.XML语言 XML是一种可扩展的标记语言,是一种强类型的语言,类似HTML(超文本标记语言,是一种弱类型的语言).XML是一种通用的数据交换格式(关系型数据库),综上所诉:XML可以传输数据,也可以存储数据. 1.XML语言书写的注意事项 1.XML标签命名自定义[推荐英文],标签名中不能包含空格 2.XML空格和换行都表示数据,严格区分大小写 3.XML中特殊字符表示的数据需要使用特殊字符编码和HTML一样 4.CDATA区中的数据不会被识别为语法 <![CDATA[王天霸<>&l

dom4j 解析 XML文档截录

dom4j 是一种解析 XML 文档的开放源代码 XML 框架.本文介绍如何使用包含在 dom4j 中的解析器创建并修改 XML 文档. dom4j API 包含一个解析 XML 文档的工具.本文中将使用这个解析器创建一个示例 XML 文档.清单 1 显示了这个示例 XML 文档,catalog.xml. 清单 1. 示例 XML 文档(catalog.xml) <?xml version="1.0" encoding="UTF-8"?> <cat

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

xml文本标记语言: 常用于交换数据:独立于操作系统.编程语言数据存储:xml数据配置:灵活性强,可读性高可以使用css样式改变xml样式 xml解析技术:dom解析xml技术: sax解析xml技术:读取文档时激活一系列的事件事件推给事件处理器,然后由事件处理器提供对文档的访问内存消耗小无需为所有节点创建对象 xml规范文档: dtd特殊符号:*:零次或者任意多次|:里面的元素多选一():分组,:里面的元素必须出现+:最少出现一次?:最多出现一次dtd定义属性:元素:<!ELEMENT con

DOM4J与JDOM解析xml文档

1.   JDOM方式解析XML JDOM并不是java官方解析xml文档的方法,所以在进行文档解析前,需要下载JDOM的jar包:http://www.jdom.org/downloads/:并将其路径添加到当前项目中,或者把jar包拷贝到当前项目中. 同样地使用前面的books.xml文档进行解析: books.xml: <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book

四种生成和解析XML文档的方法详解

众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 一.介绍及优缺点分析 1. DOM(Document Object Model) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作.由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的. [优点]      ①允许应用

艺多不压身 -- 四种生成和解析XML文档的方法详解

众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J DOM:在现在的Java JDK里都自带了,在xml-apis.jar包里 SAX: JDOM: DOM4J: 一.介绍及优缺点分析 1. DOM(Document Object Model) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然

四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)

四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例) 众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml-apis.jar包里 SAX:http://sourceforge.net/projects/sax/ JDOM:http://jdom.org/downloads/index.html DOM4J:http://sourceforge.