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文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc
dom4j解析xml文件代码示例 dom4j解析xml文件代码示例 dom4j解析xml文件代码示例
dom4j是一种解析XML文档的开放源代码XML框架。本文介绍如何使用包含在dom4j中的解析器创建并修改XML文档。dom4j API包含一个解析XML文档的工具。本文中将使用这个解析器创建一个示例XML文档,然后使用同一个解析器...
Java使用sax、dom、dom4j解析xml文档的代码,包含dom4j的jar包。
dom4j解析XML文件格式dom4j解析XML文件格式dom4j解析XML文件格式
dom4j解析xml文件的压缩包,完整版。对jdom进行了封装。包含源码,jar包以及所需的全部内容。
1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件
分别使用DOM和DOM4j解析XML文件,因为目前使用最广泛的是DOM4j所以只写了用DOM4j对XML进行增删改查。
在本文中,我们将学习如何使用 Dom4j 生成 XML 文档和解析 XML 文档。 生成 XML 文档 使用 Dom4j 生成 XML 文档非常简单。首先,我们需要创建一个 Document 对象,然后添加元素和属性。下面是一个生成 XML 文档的...
dom4j解析XML文档.ppt
使用DOM4j技术快速解析XML文件,提高开发效率
完整的讲解一个dom4j对xml的增删改查
一个关于用dom4j解析xml,遍历xml,建立xml的简单例子
dom4j解析xml,连接oracle数据库实例
很详细的文档 可以借鉴下 希望对你有帮助
基于dom4j的读写xml文件的工具包。封装了dom4j操作xml文档的常和方法。 支持两种读写方法。1:针对小文件的读取整个文档,2:针对大文件的,逐行读取。读到几百M文件毫无压力。
本人自己研究的解析方法,主要用dom4j解析XML文件,进而获取里面的信息
使用Dom4j解析XML文件的jar包.
dom4j解析xml,利用反射机制.将解析出来的信息保存到一个类当中
java dom4j 解析xml文档 使用java操作xml 例如创建 读取 删除 等等