要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/
目前最新dom4j包下载地址:http://nchc.dl.sourceforge.net/sourceforge/dom4j/dom4j-1.6.1.zip
解开后有两个包,仅操作XML文档的话把dom4j-1.6.1.jar加入工程就可以了,如果需要使用XPath的话还需要加入包jaxen-1.1-beta-7.jar.
以下是相关操作:
一.Document对象相关
1.读取XML文件,获得document对象.
SAXReader reader = new SAXReader();
Document document = reader.read(new File("input.xml"));
2.解析XML形式的文本,得到document对象.
String text = "<members></members>";
Document document = DocumentHelper.parseText(text);
3.主动创建document对象.
Document document = DocumentHelper.createDocument();
Element root = document.addElement("members");// 创建根节点
二.节点相关
1.获取文档的根节点.
Element rootElm = document.getRootElement();
2.取得某节点的单个子节点.
Element memberElm=root.element("member");// "member"是节点名
3.取得节点的文字
String text=memberElm.getText();
也可以用:
String text=root.elementText("name");这个是取得根节点下的name字节点的文字.
4.取得某节点下名为"member"的所有字节点并进行遍历.
List nodes = rootElm.elements("member");
for (Iterator it = nodes.iterator(); it.hasNext();) {
Element elm = (Element) it.next();
// do something
}
5.对某节点下的所有子节点进行遍历.
for(Iterator it=root.elementIterator();it.hasNext();){
Element element = (Element) it.next();
// do something
}
6.在某节点下添加子节点.
Element ageElm = newMemberElm.addElement("age");
7.设置节点文字.
ageElm.setText("29");
8.删除某节点.
parentElm.remove(childElm);// childElm是待删除的节点,parentElm是其父节点
三.属性相关.
1.取得某节点下的某属性
Element root=document.getRootElement();
Attribute attribute=root.attribute("size");// 属性名name
2.取得属性的文字
String text=attribute.getText();
也可以用:
String text2=root.element("name").attributeValue("firstname");这个是取得根节点下name字节点的属性firstname的值.
3.遍历某节点的所有属性
Element root=document.getRootElement();
for(Iterator it=root.attributeIterator();it.hasNext();){
Attribute attribute = (Attribute) it.next();
String text=attribute.getText();
System.out.println(text);
}
4.设置某节点的属性和文字.
newMemberElm.addAttribute("name", "sitinspring");
5.设置属性的文字
Attribute attribute=root.attribute("name");
attribute.setText("sitinspring");
6.删除某属性
Attribute attribute=root.attribute("size");// 属性名name
root.remove(attribute);
四.将文档写入XML文件.
1.文档中全为英文,不设置编码,直接写入的形式.
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));
writer.write(document);
writer.close();
2.文档中含有中文,设置编码格式写入的形式.
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK"); // 指定XML编码
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"),format);
writer.write(document);
writer.close();
五.字符串与XML的转换
1.将字符串转化为XML
String text = "<members> <member>sitinspring</member> </members>";
Document document = DocumentHelper.parseText(text);
2.将文档或节点的XML转化为字符串.
SAXReader reader = new SAXReader();
Document document = reader.read(new File("input.xml"));
Element root=document.getRootElement();
String docXmlText=document.asXML();
String rootXmlText=root.asXML();
Element memberElm=root.element("member");
String memberXmlText=memberElm.asXML();
六.使用XPath快速找到节点.
读取的XML文档示例
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>MemberManagement</name>
<comment></comment>
<projects>
<project>PRJ1</project>
<project>PRJ2</project>
<project>PRJ3</project>
<project>PRJ4</project>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
使用XPath快速找到节点project.
public static void main(String[] args){
SAXReader reader = new SAXReader();
try{
Document doc = reader.read(new File("sample.xml"));
List projects=doc.selectNodes("/projectDescription/projects/project");
Iterator it=projects.iterator();
while(it.hasNext()){
Element elm=(Element)it.next();
System.out.println(elm.getText());
}
}
catch(Exception ex){
ex.printStackTrace();
}
------------------------------------------------------------------------------------------------------------------------------
附带例子:
package com.stz; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.SAXReader; import java.io.File; import java.util.Iterator; import java.util.List; public class TestDate { public static void main(String[]args){ String xml="<?xml version=\"1.0\" encoding=\"utf-8\"?>"+ "<students>"+ " <student id=\"1\">"+ " <name>stz</name>"+ " <age>23</age>"+ "</student>"+ "<student id=\"2\">"+ "<name>rhl</name>"+ "<age>23</age>"+ "</student>"+ "<student id=\"3\">"+ " <name>tom</name>"+ " <age>23</age>"+ "</student>"+ "</students>"; try { Document document=DocumentHelper.parseText(xml); Element root=document.getRootElement(); //System.out.println(ele.e); //List nodes=root.elements("student"); //System.out.println(root.getName()); //root.elementIterator(); List nodes=document.selectNodes("/students/student"); for (Iterator it = nodes.iterator(); it.hasNext();) { Element elm = (Element) it.next(); System.out.println("id:"+elm.attributeValue("id")); System.out.println(elm.getName()); Element eles=elm.element("name"); System.out.println(eles.getText()); Element elea=elm.element("age"); System.out.println(elea.getText()); } } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
<wbr></wbr>
相关推荐
"dom4j-1.6.1.jar"和"dom4j.jar"是DOM4J的jar包,包含了DOM4J的所有类和方法,可以直接引入到Java项目中使用。而"dom4j.txt"可能是DOM4J的API文档或者相关说明文本,供开发者查阅和学习。 总结来说,DOM4J是Java...
- **DOM4J中常用的XPath方法**: - `selectNodes(String xpathExpression)`:根据XPath表达式选取一系列节点。 - `selectSingleNode(String xpathExpression)`:根据XPath表达式选取单个节点。 - `valueOf(String...
### 四、DOM4J的使用示例 1. 解析XML文档: ```java SAXReader reader = new SAXReader(); Document document = reader.read("input.xml"); ``` 2. 创建XML文档: ```java Document document = ...
- **使用场景**:这是DOM4J中最常用的一个接口,用于创建、读取和修改XML文档中的元素。 ##### 9. `ElementHandler` - **定义**:`ElementHandler`定义了对`Element`对象进行处理的方式。 - **使用场景**:实现...
在Java应用程序开发中,DOM4J是一个常用的选择,特别是在需要处理大量XML数据时,因为它的性能和内存效率都相当出色。 1. **DOM4J的基本概念** - DOM(Document Object Model)是一种国际标准,用于表示XML文档的...
DOM4j提供了多种方式来解析XML文件,其中最常用的是构建DOM4j树和使用XPath进行查询。 1. **构建DOM4j树**:可以使用SAXReader类来读取XML文件,并将其转换为DOM4j树。 ```java SAXReader reader = new SAXReader...
这个“dom4j示例”压缩包很可能是包含了一些示例代码,帮助学习者理解DOM4J的工作原理和常用操作。 DOM4J的核心概念包括元素(Element)、属性(Attribute)、文本(Text)以及命名空间(Namespace)。在XML文档中...
当我们需要将XML字符串解析并映射到Java Bean对象时,dom4j是一个常用的库。本篇文章将详细探讨如何使用dom4j库实现这个过程。 首先,dom4j是一个强大的Java XML API,它提供了丰富的功能,如读取、写入、修改和...
DOM4J是Java中解析XML的常用库之一,其名称中的“DOM”指的是Document Object Model,这是一个W3C标准,用于表示XML文档的树型结构。DOM4J不仅支持DOM,还提供了SAX(Simple API for XML)和StAX(Streaming API for...
以下是一些DOM4J常用API的示例: 1. 创建Element: ```java DocumentFactory factory = DocumentFactory.getInstance(); Element root = factory.createElement("root"); ``` 2. 添加子元素: ```java ...
最常用的方法是通过`DocumentBuilder`来创建一个`Document`对象,这个对象代表了整个XML文档。例如,我们可以使用以下代码来加载XML文件: ```java DocumentFactory factory = DocumentFactory.getInstance(); ...
最常用的版本是`dom4j-1.6.1.jar`,可以从以下链接下载: - [Download](http://sourceforge.net/directory/os:windows/freshness:recently-updated/?q=dom4j) #### 四、示例代码分析 下面是一个简单的例子,展示...
2. 灵活的API:DOM4J提供了一套直观且易于使用的接口,使得XML处理更加简单。 3. 支持XPath:DOM4J支持XPath表达式,可以方便地查找和定位XML文档中的节点。 4. 处理XML Schema:DOM4J可以解析XML Schema文件,并...
【标题】"Dom4J简单用法的示例"揭示了如何在Java环境中利用Dom4J库进行XML文档的操作。Dom4J是一个流行的、灵活的Java库,它为处理XML文档提供了丰富的API,使得XML的读取、创建、修改变得更加方便。 【描述】中的...
在Java项目中,DOM4J常用于处理XML数据,SLF4J作为日志接口,而LOG4J则是常用的日志实现。这三个库的组合使用,能够帮助开发者更好地处理XML文档,同时提供强大的日志记录能力,从而提高代码的可读性和维护性。下载...
综上所述,dom4j是Java开发中处理XML的强大工具,其简洁的API和强大的功能使得XML操作变得简单易懂。无论是创建、解析还是修改XML文档,dom4j都能提供高效且易于理解的解决方案。通过熟练掌握dom4j,开发者能更好地...
而“ant.txt”可能是构建脚本的一部分,Ant是Java项目常用的构建工具,此文本文件可能包含了如何在Ant环境中使用DOM4J的配置信息,帮助开发者在构建过程中正确地引用和打包DOM4J库。 使用DOM4J,开发者可以方便地...
DOM4j 提供了对 XML、XPath 和 XSLT 的全面支持,并且完全融入了 Java 集合框架,使得在 Java 平台上处理 XML 数据变得简单。在 DOM4j 中,所有主要接口都集中在 `org.dom4j` 包内,这使得代码更加模块化和易于理解...