Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。
下面我们一起来分析一下使用Dom4j对于XML文档的CRUD操作。
Dom4j的主要接口(org.dom4j)
Attribute
|
Attribute定义了XML的属性
|
Branch
|
Branch为能够包含子节点的节点如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为
|
CDATA
|
CDATA 定义了XML CDATA 区域
|
CharacterData
|
CharacterData是一个标识借口,标识基于字符的节点。如CDATA,Comment, Text
|
Comment
|
Comment 定义了XML注释的行为
|
Document
|
定义了XML文档
|
DocumentType
|
DocumentType 定义XML DOCTYPE声明
|
Element
|
Element定义XML 元素
|
ElementHandler
|
ElementHandler定义了 Element 对象的处理器
|
ElementPath
|
被 ElementHandler 使用,用于取得当前正在处理的路径层次信息
|
Entity
|
Entity定义 XML entity
|
Node
|
Node为所有的dom4j中XML节点定义了多态行为
|
NodeFilter
|
NodeFilter 定义了在dom4j节点中产生的一个滤镜或谓词的行为(predicate)
|
ProcessingInstruction
|
ProcessingInstruction 定义 XML 处理指令
|
Text
|
Text 定义XML 文本节点
|
Visitor
|
Visitor 用于实现Visitor模式
|
XPath
|
XPath 在分析一个字符串后会提供一个XPath 表达式
|
一、 读取并解析XML文档
import java.io.File;
import java.io.FileWriter;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
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 Dom4jDeom {
@Test
public void test1() throws Exception {
SAXReader reader = new SAXReader(); //创建阅读器
Document document = reader.read(new File("src\\code1.xml")) //加载XML文档
Element root = document.getRootElement(); //获取根元素
display(root);
}
private void display(Element root) {
// TODO Auto-generated method stub
displayAttr(root); //获取属性
for (Iterator<Element> i = root.elementIterator(); i.hasNext();) {
Element ele = i.next();
if (ele.isTextOnly()) {
displayAttr(ele);
System.out.println(ele.getText());
} else {
display(ele); //递归调用
}
}
}
@SuppressWarnings("unchecked")
private void displayAttr(Element root) {
// TODO Auto-generated method stub
for (Iterator<Attribute> j = root.attributeIterator(); j.hasNext();) {
Attribute attr = j.next();
System.out.println(attr.getName() + " " + attr.getValue());
}
}
}
code1.xml代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE books[
<!ELEMENT books (book*)>
<!ELEMENT book (name,author,price)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ATTLIST author address CDATA #IMPLIED>
]>
<books>
<book>
<name>Java开发</name>
<author>佚名1</author>
<price>10.00</price>
</book>
<book>
<name>Java讲义</name>
<author>佚名2</author>
<price>11.00</price>
</book>
<book>
<name>Java Web</name>
<author address="保定-河软">佚名3</author>
<price>12.00</price>
</book>
<book>
<name>Java 基础</name>
<author address="保定-河软">佚名4</author>
<price>15.00</price>
</book>
</books>
二、 使用Dom4j向XML文档中写入内容
1、使用Dom4j直接创建一个新的XML文档
public void test2() throws Exception {
Document document = DocumentHelper.createDocument();
Element root = document.addElement("中国");
Element newchild = root.addElement("省份");
Element child = newchild.addElement("陕西省");
child.setText("交通大学");
child = newchild.addElement("河北省");
child.setText("河北软件");
child.addAttribute("dept", "软件系");
child = newchild.addElement("北京市");
child.setText("Microsoft");
OutputFormat format = new OutputFormat(" ", true, "utf-8");
XMLWriter xw = new XMLWriter(new FileWriter("src\\code2.xml"), format);
xw.write(document);
xw.close();
}
2、使用Dom4j向XML文档的指定位置写入一个元素
public void test4() throws Exception {
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src\\code2.xml"));
Element root = document.getRootElement();
Element child = DocumentHelper.createElement("天津市");
child.setText("天津纺织工业大学"); //设置元素内容
Element ele = (Element) root.elements("省份").get(1); //获取要写入的元素位置
List list = ele.elements();
list.add(1, child);
OutputFormat format = new OutputFormat(" ", true, "utf-8");
XMLWriter xw = new XMLWriter(new FileWriter("src\\code2.xml"), format);
xw.write(document);
xw.close();
}
三、 删除XML文档中节点处的元素
public void test5() throws Exception {
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src\\code2.xml"));
Element root = document.getRootElement();
Element ele = (Element) root.elements().get(1);
Element et = (Element) ele.elements().get(1);
ele.remove(et);
OutputFormat format = new OutputFormat(" ", true, "utf-8"); //格式化输出对象
XMLWriter xw = new XMLWriter(new FileWriter("src\\code2.xml"), format);
xw.write(document);
xw.close();
}
四、修改XML文档中元素的内容
public void test6() throws Exception {
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src\\code2.xml"));
Element root = document.getRootElement();
Element ele = (Element) root.elements().get(0);
Element et = (Element) ele.elements().get(0);
et.setText("陕西师范大学"); //修改元素内容
OutputFormat format = new OutputFormat(" ", true, "utf-8");
XMLWriter xw = new XMLWriter(new FileWriter("src\\code2.xml"), format);
xw.write(document);
xw.close(); //关闭输出流
}
以上便是利用Dom4j的CRUD操作,其中遍历时的迭代方法很重要。另外在对XML文档中的元素进行修改和删除时的元素节点位置的获取也是一个重点。
分享到:
相关推荐
在使用DOM4j解析XML文件时,首先需要导入DOM4j的相关包,如`SAXReader`用于读取XML文件,`Document`表示整个XML文档,`Element`表示XML文档中的元素,以及`Attribute`表示元素的属性。以下是一个使用DOM4j解析XML...
### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...
在提供的视频资源"17-dom4j解析xml文档(增删改查).avi"中,可能详细展示了这些操作的步骤和示例,观看该视频将进一步加深你对DOM4J操作XML的理解。记得实践是检验理论的最好方式,动手操作会让你更好地掌握这些知识...
5. **事件驱动解析(SAX)**:除了传统的DOM解析外,DOM4J还支持SAX解析器,这种解析方式适用于处理大型XML文件,因为它不需要一次性加载整个文档到内存。 6. **Namespace支持**:DOM4J提供了对XML命名空间的全面...
2. **创建Document对象**: DOM4J使用`Document`对象来表示整个XML文档。我们可以通过`SAXReader`读取XML文件并创建`Document`对象。 ```java import org.dom4j.Document; import org.dom4j.DocumentException; ...
使用DOM解析XML的基本步骤如下: 1. 创建DocumentBuilderFactory实例。 2. 使用DocumentBuilderFactory创建DocumentBuilder实例。 3. 使用DocumentBuilder的parse()方法解析XML文件,得到Document对象。 4. 通过...
Java提供了多种解析XML的API,包括SAX(Simple API for XML)、DOM(Document Object Model)以及DOM4J。下面我们将详细探讨这些解析方式及其在实际开发中的应用。 1. SAX解析器: SAX是一种基于事件驱动的解析器,...
在这个实例中,我们将深入探讨如何使用DOM4J解析XML文件,并通过`Dom4jTest1.java`这个示例程序来理解其工作原理。 首先,我们需要了解XML(Extensible Markup Language)是一种标记语言,常用于存储和传输数据。...
【使用dom4j解析XML】 dom4j是一个强大的开源XML框架,它提供了处理XML文档的各种功能,包括解析、创建、修改等。相比W3C DOM API,dom4j的优势在于其内置的XPath支持,允许更方便地定位和操作XML文档中的节点。 *...
1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件
在本实例中,我们将深入探讨如何使用DOM4J解析XML,并利用这些数据连接Oracle数据库进行数据操作。 首先,让我们了解DOM4J的基本用法。DOM4J的主要类包括`Document`、`Element`、`Attribute`和`Namespace`。`...
Java DOM4J解析XML是一种常见的处理XML文档的技术,它提供了灵活且高效的API,使得开发者能够方便地读取、写入、修改以及操作XML文件。DOM4J是Java中一个非常强大的XML处理库,它结合了DOM、SAX和JDOM的优点,同时也...
在本文中,我们将学习如何使用 Dom4j 生成 XML 文档和解析 XML 文档。 生成 XML 文档 使用 Dom4j 生成 XML 文档非常简单。首先,我们需要创建一个 Document 对象,然后添加元素和属性。下面是一个生成 XML 文档的...
**DOM4J解析XML实例详解** 在Java编程中,处理XML文档是一项常见的任务。DOM4J是一个非常流行的、强大的Java XML API,它提供了灵活且高效的方式来解析、创建、修改XML文档。本文将深入探讨如何使用DOM4J进行XML...
**DOM4J解析XML** DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效且功能丰富的API,使得XML的读取、创建、修改和查询变得简单易行。DOM4J的主要特点包括对XPath的支持、事件驱动的解析、以及与...
2. **解析XML文档**: - 使用`Document`对象及其子类提供的方法来查询和修改XML文档。 - 主要通过XPath表达式来定位XML文档中的特定节点或元素。 3. **输出XML文档**: - 将修改后的`Document`对象写回到XML文件...
3. 解析XML文档,触发事件,触发相应的事件处理函数。 4. 事件处理函数中完成对XML数据的解析和处理。 ### 结论 DOM4J是一个强大的Java XML API,支持XML的读写、搜索、修改等功能,它通过SAXReader对象读取XML...
本篇文章将深入探讨如何使用DOM4J来解析XML文件,以及通过示例代码来展示其基本操作。 首先,我们需要理解DOM4J的工作原理。DOM4J采用的是DOM(Document Object Model)模型,它将整个XML文档加载到内存中形成一棵...
DOM4J是一个强大的Java库,专门用于解析XML文档。它提供了简单易用的API,使得开发者可以更加方便地处理XML数据。DOM4J的核心优势在于它的面向接口编程设计,这使得它能够在不同的解析机制间灵活切换,如DOM、SAX和...