【学习笔记】关于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:是一个标识接口,标致基于字符的节点:(CDATA、Comment、Text);

Comment:定义了XML注释的行为;

Document:定义了XML文档;

DocumentType:定义了XML的DOCTYPE声明;

Element:定义了XML文档;

ElementHandler:定义了Element对象的处理器;

ElementPath:被ElementHandler使用,用于取得当前正在处理的路径层次信息;

Entity:定义XML的entity;

Node:为所有的DOM4J中XML节点定义了多态行为;

NodeFilter:定义了在DOM4J节点中产生的一个滤镜或谓词的行为(predicate);

ProcessingInstruction:定义XML处理指令;

Text:定义XML文本节点;

Visitor:用于实现Visitor模式;

XPath:在分析一个字符串后会提供一个XPath表达式。

三、使用DOM4J操作XML数据

1.Document对象相关

读取XML文件,获得document对象。

SAXReader reader = new SAXReader();

Document document = reader.read(new File("input.xml"));

2.节点相关

获取文档的根元素

Element rootElm = document.getRootElement();

取得某节点的单个子节点

Element memberElm = root.element("member");//"member"是节点名

取得节点的文字

String text = memberElm.getText();

String text = root.elementText("name");//取得根元素下的name子节点的文字

取得某节点下名为“member”的所有子节点并进行遍历

List nodes = rootElm.elements("member");

for(Iterator it=nodes.iterator;it.hasNext();){

  Element elm = (Element)it.next();

}

对某节点下的所有子节点进行遍历

for(Iterator it = root.elementIterator();it.hasNext();){

  Element element = (Element) it.next();

}

在某节点下添加子节点

Element ageElm = newMemberElm.addElement("age");

设置节点文字

ageElm.setText("29");

删除某节点

parentElm.remove(childElm);//childElm是待删除的节点,parentElm是其父节点

3.相关属性

取得某节点下的属性

Element root = document.getRootElement();

Attribute attribute = root.attribute("size");//属性名name

取得属性的文字

String text = attribute.getText();

String text = root.element("name").attributeValue("firstname");

遍历某节点的所有属性

Element root = document.getRootElement();

for(Iterator it = root.attributeIterator();it.hasNext();{

  Attribute attribute = (Attribute)it.next();

  String text = attribute.getText();

  System.out.println(text);

}

设置某节点的属性和文字

newMemberElm.addAttribute("name","sitinspring");

设置属性的文字

Attribute attribute = root.attribute("name");

attribute.setText("sitinspring");

删除某属性

Attribute attribute = root.attribute("size");

root.remove(attribute);

4.将文档写入XML文件

(1)文档中全为英文,不设置编码格式,直接写入

XMLWriter writer = new XMLWriter(new FileWriter("output.xml");

writer.write(document);

writer.close();

(2)文档中含有中文,设置编码格式在写入

OutputFormat format = OutputFormat.createPrettyPrint();

format.setEncoding("GBK");

XMLWriter writer = new XMLWriter(new FileWriter("output.xml"),format);

writer.write(document);

writer.close();

四、案例:使用DOM4J读取XML文档,步骤如下:

1.导入DOM4J的jar包

2.指定要解析的XML文件

3.把XML文件转换成Document对象

4.获取节点属性或文本的值

 1 import java.io.File;
 2 import java.util.Iterator;
 3
 4 import org.dom4j.Document;
 5 import org.dom4j.DocumentException;
 6 import org.dom4j.Element;
 7 import org.dom4j.io.SAXReader;
 8
 9 /**
10  * 使用DOM4J解析XML文档
11  * @author Administrator
12  *
13  */
14 public class PhoneDom4j {
15
16     public static void main(String[] args) {
17         Document phone = null;
18         try {
19             //加载DOM树
20             SAXReader saxReader = new SAXReader();
21             phone = saxReader.read(new File("src/phoneInfo.xml"));
22         } catch (DocumentException e) {
23             e.printStackTrace();
24         }
25         //获取xml的根节点
26         Element root = phone.getRootElement();
27         //遍历所有的Brand标签
28         for (Iterator<?> itBrand = root.elementIterator(); itBrand.hasNext();) {
29             Element brand = (Element) itBrand.next();
30             //输出标签的属性
31             System.out.println("品牌:"+brand.attributeValue("name"));
32             //遍历Type标签
33             for (Iterator<?> itType = brand.elementIterator(); itType.hasNext();) {
34                 Element type = (Element) itType.next();
35                 //输出标签的name属性
36                 System.out.println("\t型号:"+type.attributeValue("name"));
37             }
38         }
39
40     }
41
42 }
时间: 2024-10-10 17:08:05

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

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

使用dom4j解析XML文档

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

javaweb dom4j解析xml文档

1.什么是dom4j dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件,可以在SourceForge上找到它.在IBM developerWorks上面还可以找到一篇文章,对主流的Java XML API进行的性能.功能和易用性的评测,所以可以知道dom4j无论在哪个方面都是非常出色的.如今可以看到越

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

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

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

四种生成和解析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的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 1.DOM(Document Object Model) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合. 这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作.由于它是基于信息层次的,因而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.