前提:需要将dom4j-1.6.1.jar包加入到工程(WEB-INF\lib路径下)。
★ Document对象
1、 读取XML文件,形成Document对象:
SAXReader reader = new SAXReader() ;
Document doc = reader.read(new File(“input.xml”)) ;
2、 解析XML文本,得到Document对象:
String text = “<members></members>” ;
Document doc = DocumentHelper.parseText(text) ;
3、 主动创建:
Document doc = DocumentHelper.createDocument() ;
Element root = doc.addElement(“members”) ; //创建根节点;
总结:SAXReader接口:读取已经存在的XML文件;
一个方法read():读取文件形成Document对象。
DocumentHelper接口:分析程序中XML形式的文本或主动创建Document对象;
parseText():解析现有的XML文本段并生产Document对象;
createDocument():创建一个Document对象。
★ 节点实际上是元素吧
学习节点的操作前应该明白两点:节点是在Document对象的基础上进行操作的;
节点分为根节点和普通节点。要进行操作先要获得根节点(root)。
1、 对于根节点
获得节点:getRootElement() ;
2、 对于一般节点
取得某节点的子节点:
Element child = root.element(“members”) ; //取得名为members的节点;
取得节点的文字:
String text = child.getText() ; //child是上述取出的节点名;
或者使用下述方法:
root.elementText(“name”) ; //取得节点名称为name的文本;
3、 遍历
·取得某个节点下的名为“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 elm = (Element)it.next() ;
}
两个程序段中,rootElm(document.getRootElement()得到)与root是一回事吗?
4、 节点的增删
·增加节点
Element newChild = existParent.addElement(“name”) ;
·增加节点的文字
newChild.setText(“lsl”) ;
·删除节点
parentElm.remove(childElm) ;
★ 属性
1、 取得某个节点的属性
Element root = document.getRootElement() ;
Attribute attr = root.attribute(“size”) ;
2、 取得属性的文字
String text = attr.getText() ;
也可用下面的方法
//取得根节点下name子节点的属性firstname的值
String text = root.element(“name”).attributeValue(“firstname”) ;
3、 遍历
Element root = document.getRootElement() ;
for(Iterator it = root.attributeIterator();it.hasNext();){
Attribute attr = (Attribute)it.next() ;
String text = attr.getText() ;
}
4、 增删
·增加属性
newElm.addAttribute(“name”,”lsl”) ;//给新阶段添加新属性name值为lsl;
·只增加属性的值
Attribute attr = root.attribute(“name”) ;//取得已存在的属性name;
attr.setText(“lsl”) ; //将值设为lsl
·删除属性
Attribute attr = root.attribute(“size”) ; //取得一个已存在的属性
root.remove(attr) ; //删除属性
通过对节点和属性的学习可以看出,对XML的操作基本上是 XML文件à document对象à root(根节点)。对于节点和属性的增删操作都是在root上进行的。
★ 将文档写入XML文件
1、 不需要设置格式,直接输出
XMLWriter writer = new XMLWriter(new FileWriter(“output.xml”)) ;
writer.write(document) ;
writer.close() ;
2、 当需要设置编码时,用到OutputFormat类
OutputFormat format = OutputFormat.createPrettyPrint() ;
format.setEncoding(“GBK”) ; //设置编码格式
XMLWriter writer = new XMLWriter(new FileWriter(“output.xml”),format) ;
… …
★ 字符串与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();
★ 实例代码
1、 创建XML(CreatXML.java)
package com.dom4j.lsl;
import java.io.File;
import java.io.FileWriter;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
public class CreateXML {
/**
* @param args
*/
public void createXML(String filename) {
//Create the Documetn object;
Document doc = DocumentHelper.createDocument() ;
//add the root element
Element books = doc.addElement("BOOKS") ;
//add comments
books.addComment("这是一个关于Dom4j的测试程序,用于生成一个XML文件") ;
//add the first child element
Element book = books.addElement("BOOK") ;
//add attribute
book.addAttribute("show","yes") ;
Element title = book.addElement("TITLE") ;
//add the text
title.setText("玉女心经") ;
Element owner = books.addElement("OWNER") ;
try{
OutputFormat format = OutputFormat.createPrettyPrint() ;
XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)),format) ;
writer.write(doc) ;
writer.close() ;
}catch(Exception e){
e.printStackTrace() ;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//Output the XML file
CreateXML cx = new CreateXML() ;
cx.createXML("E://test.xml") ;
}
}
2、 解析XML(ParseXML.java)
package com.dom4j.lsl;
import java.io.File;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class ParseXML {
/**
* @param args
* @throws DocumentException
*
* 用于试验的文件如下:
* -------------------
* <?xml version="1.0" encoding="UTF-8"?>
*<BOOKS>
* <BOOK show="yes">
* <TITLE>AAA</TITLE>
* </BOOK>
* <OWNER/>
*</BOOKS>
*--------------------
*/
public static void main(String[] args) throws DocumentException {
/**
* 关于 Element 的测试;
*
* getRootElemt() 获得 根节点
* elementText() 父节点调用,返回子节点的内容 等同于getText()方法
* element(arg) 获取 arg 指定的节点
*/
SAXReader reader = new SAXReader() ;
Document doc = reader.read(new File("E://test.xml")) ;
Element root = doc.getRootElement() ;
Element child = root.element("BOOK") ;
Element gradChild = child.element("TITLE") ;
/**
* 元素只能由其父元素调用element()方法得到,不能隔代选取
* 如下是错误的
* Element gradChild1 = root.element("TITLE") ;
* 而如下语句
* String gradChildText = root.elementText("TITLE") ;
* 则返回null,不报错.
*/
//测试方法elementText();
String gradChildText = child.elementText("TITLE") ;
String gradChildText1 = gradChild.asXML();
String gradChildText2 = gradChild.getText() ;
/**
* 以下用于 Attribute 的测试;
*
* attribute() 获取属性对象
* arributeValue(arg) 获取arg指示的属性的值 类似与eleentText()吧
* asXML() 将 节点或属性 转换成可以输出的字符串形式;
* getText() 获取属性或节点的值;
*/
Attribute childAttr = child.attribute("show") ;
String attrText = childAttr.asXML() ;
String attrText1 = childAttr.getText() ;
String attrText2 = child.attributeValue("show") ;
/**
* 以下代码用于输出结果
*/
System.out.println(gradChildText) ;
System.out.println(gradChildText1) ;
System.out.println(gradChildText2) ;
System.out.println(attrText) ;
System.out.println(attrText1) ;
System.out.println(attrText2) ;
/**
* 关于XML的简单应用
*/
String show ;
show = attrText1 ;
if(show.equals("yes")){
System.out.println("元素<BOOK>的show属性的值是yes!") ;
}
}
}
分享到:
相关推荐
在项目中使用DOM4J时,只需将相应的jar包(如dom4j-1.6.1.jar、dom4j-2.0.2.jar或dom4j-2.1.1.jar)导入到类路径中,即可开始利用其功能处理XML文档。导入后,可以按照DOM4J提供的API进行编程,快速实现XML的读写...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单易行。在Java世界中,DOM4J是与DOM、SAX和JDOM等其他XML处理库并驾齐驱的一个选择,尤其在处理...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效的API,使得XML的解析、创建、查询和修改变得更为简单。在本文中,我们将深入探讨DOM4J 1.6.1版本的安装及其在Maven项目中的应用。 首先,DOM4J...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效的API,使得XML的解析、创建、修改和查询变得简单。这次我们有两个版本的DOM4J库:1.6.1和2.0.0-ALPHA。这两个版本在功能、性能和API设计上都有所...
标题提及的"dom4j_1.6.1.jar"和"dom4j_2.1.0.jar"是两个不同版本的DOM4J库的Java档案文件,DOM4J是一个非常流行的Java XML API,用于处理XML文档。这两个版本的差异在于功能、性能优化和可能存在的bug修复。描述中...
dom4j-1.6.1.jar,Dom4j是一个Java的XML API接口,是jdom的进化版,dom4j基本用来读写xml文件,是一个十分优秀的JavaXML API接口
赠送jar包:dom4j-2.1.1.jar; 赠送原API文档:dom4j-2.1.1-javadoc.jar; 赠送源代码:dom4j-2.1.1-sources.jar; 赠送Maven依赖信息文件:dom4j-2.1.1.pom; 包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单而直观的API,使得开发者可以方便地读取、写入、修改以及操作XML文件。DOM4J 1.6.1是这个库的一个稳定版本,发布于较早时期,但依然广泛应用于许多Java...
另一份重要的资源是"dom4j-2.1.3-sources.jar",它提供了DOM4J库的源代码,允许开发者深入研究DOM4J的内部实现,对于理解DOM4J的工作原理、进行扩展或者调试都是不可或缺的。通过阅读源代码,开发者可以学习到如何...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单。DOM4J的名字来源于“Document Object Model for Java”,但它并不仅仅是一个DOM实现,它还包含...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单。DOM4J的名字来源于“Document Object Model for Java”,它采用面向对象的设计思想,提供了...
《深入解析DOM4J——基于Java的XML处理框架》 DOM4J,作为一个强大的Java XML API,是处理XML文档的主流工具之一。它提供了一套简单而高效的方式来操作XML文档,包括读取、写入、修改和遍历XML结构。在Java开发中,...
赠送jar包:dom4j-2.1.1.jar; 赠送原API文档:dom4j-2.1.1-javadoc.jar; 赠送源代码:dom4j-2.1.1-sources.jar; 赠送Maven依赖信息文件:dom4j-2.1.1.pom; 包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-...
DOM4J是一个强大的Java库,专门用于处理XML文档。它是一个灵活且高性能的XML解析器,提供了丰富的API来创建、修改和操作XML数据。在Java应用程序中,DOM4J作为一个流行的选择,尤其在处理复杂的XML结构时,因为它...
标题提到的"所有版本的dom4j工具包"表明这是一个包含多版本DOM4J库的集合,可能包括了从早期到较新的一些版本,如dom4j-1.4.jar、dom4j-1.6.1.jar和dom4j-1.5.2.jar。这些不同版本的库可能分别对应于不同的功能特性...
DOM4J 2.1.1 是一个针对Java平台的高效、开源的XML处理库,其全称为“Document Object Model for Java”。这个库提供了一系列强大的API,使得开发人员能够轻松地解析、创建、修改和操作XML文档。XML(eXtensible ...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效的方式来解析、创建、操作和理解XML数据。这个库在Java开发中广泛使用,因为它提供了比标准Java DOM API更简单、性能更好的XML处理方式。以下是...
当我们遇到“java.lang.ClassNotFoundException: org.dom4j.DocumentException”的错误提示时,这通常意味着系统中缺少了DOM4j库,只需将“org.dom4j.jar”添加到项目类路径中即可解决此问题。 DOM4J是基于DOM和SAX...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高性能的API,使得在Java应用程序中解析、创建、修改和操作XML文档变得容易。DOM4J因其易用性和丰富的功能集,在Java社区中广受欢迎,尤其在处理大型...