`

dom4j(Version 1.6.1)快速入门

    博客分类:
  • XML
阅读更多

Parsing XML

或许你想要做的第一件事情就是解析一个某种类型的XML文档,用dom4j很容易做到。请看下面的示范代码:

import java.net.URL;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;

public class Foo {

public Document parse(URL url) throws DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read(url);
return document;
}
}

使用迭代器(Iterators)

我们可以通过多种方法来操作XML文档,这些方法返回java里标准的迭代器(Iterators)。例如:

public void bar(Document document) throws DocumentException {
Element root = document.getRootElement();
//迭代根元素下面的所有子元素
for ( Iterator i = root.elementIterator(); i.hasNext(); ) {
Element element = (Element) i.next();
//处理代码
}

//迭代根元素下面名称为"foo"的子元素
for ( Iterator i = root.elementIterator( "foo" ); i.hasNext(); ) {
Element foo = (Element) i.next();
//处理代码
}

// 迭代根元素的属性attributes)元素
for ( Iterator i = root.attributeIterator(); i.hasNext(); ) {
Attribute attribute = (Attribute) i.next();
// do something
}
}

强大的XPath导航

在dom4j中XPath可以表示出在XML树状结构中的Document或者任意的节点(Node)(例如:Attribute,Element 或者 ProcessingInstruction等)。它可以使在文档中复杂的操作仅通过一行代码就可以完成。例如:

public void bar(Document document) {
List list = document.selectNodes( "//foo/bar" );

Node node = document.selectSingleNode( "//foo/bar/author" );

String name = node.valueOf( "@name" );
}

如果你想得到一个XHTML文档中的所有超文本链接(hypertext links)你可以使用下面的代码:

public void findLinks(Document document) throws DocumentException {

List list = document.selectNodes( "//a/@href" );

for (Iterator iter = list.iterator(); iter.hasNext(); ) {
Attribute attribute = (Attribute) iter.next();
String url = attribute.getValue();
}
}

如果你需要关于XPath语言的任何帮助,我们强烈推荐这个站点Zvon tutorial他会通过一个一个的例子引导你学习。

快速遍历(Fast Looping)


如果你不得不遍历一个非常大的XML文档,然后才去执行,我们建议你使用快速遍历方法(fast looping method),它可以避免为每一个循环的节点创建一个迭代器对象,如下所示:

public void treeWalk(Document document) {
treeWalk( document.getRootElement() );
}

public void treeWalk(Element element) {
for ( int i = 0, size = element.nodeCount(); i < size; i++ ) {
Node node = element.node(i);
if ( node instanceof Element ) {
treeWalk( (Element) node );
}
else {
// do something....
}
}
}

生成一个新的XML文档对象

在dom4j中你可能常常希望用程序生成一个XML文档对象,下面的程序为你进行了示范:

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

public class Foo {

public Document createDocument() {
Document document = DocumentHelper.createDocument();
Element root = document.addElement( "root" );

Element author1 = root.addElement( "author" )
.addAttribute( "name", "James" )
.addAttribute( "location", "UK" )
.addText( "James Strachan" );

Element author2 = root.addElement( "author" )
.addAttribute( "name", "Bob" )
.addAttribute( "location", "US" )
.addText( "Bob McWhirter" );

return document;
}
}

将一个文档对象写入文件中

将一个文档对象写入Writer对象的一个简单快速的途径是通过write()方法。

FileWriter out = new FileWriter( "foo.xml" );
document.write( out );

如果你想改变输出文件的排版格式,比如你想要一个漂亮的格式或者是一个紧凑的格式,或者你想用Writer 对象或者OutputStream 对象来操作,那么你可以使用XMLWriter 类。

import org.dom4j.Document;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class Foo {

public void write(Document document) throws IOException {

// 写入文件
XMLWriter writer = new XMLWriter(
new FileWriter( "output.xml" )
);
writer.write( document );
writer.close();


// 以一种优雅的格式写入System.out对象
OutputFormat format = OutputFormat.createPrettyPrint();
writer = new XMLWriter( System.out, format );
writer.write( document );

// 以一种紧凑的格式写入System.out对象
format = OutputFormat.createCompactFormat();
writer = new XMLWriter( System.out, format );
writer.write( document );
}
}

转化为字符串,或者从字符串转化

如果你有一个文档(Document)对象或者任何一个节点(Node)对象的引用(reference),象属性(Attribute)或者元素(Element),你可以通过asXML()方法把它转化为一个默认的XML字符串:

Document document = ...;
String text = document.asXML();

如果你有一些XML内容的字符串表示,你可以通过DocumentHelper.parseText()方法将它重新转化为文档(Document)对象:

String text = "<person><name>James</name></person>";
Document document = DocumentHelper.parseText(text);

通过XSLT样式化文档(Document)


使用Sun公司提供的JAXP API将XSLT 应用到文档(Document)上是很简单的。它允许你使用任何的XSLT引擎(例如:Xalan或SAXON等)来开发。下面是一个使用JAXP创建一个转化器(transformer),然后将它应用到文档(Document)上的例子:

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;

import org.dom4j.Document;
import org.dom4j.io.DocumentResult;
import org.dom4j.io.DocumentSource;

public class Foo {

public Document styleDocument(
Document document,
String stylesheet
) throws Exception {

// 使用 JAXP 加载转化器
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(
new StreamSource( stylesheet )
);

// 现在来样式化一个文档(Document)
DocumentSource source = new DocumentSource( document );
DocumentResult result = new DocumentResult();
transformer.transform( source, result );

// 返回经过样式化的文档(Document)
Document transformedDoc = result.getDocument();
return transformedDoc;
}
}

原文地址
dom4j下载地址

初次尝试翻译,如果有翻译不妥的地方,希望大家指出来,我们共同进步!
谢谢!!
[:)]

分享到:
评论

相关推荐

    JavaEE源代码 dom4j-1.6.1

    JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源...

    dom4j-1.6.1.jar

    4. **XPath支持**:XPath是一种在XML文档中查找信息的语言,dom4j支持XPath 1.0规范,可以通过简单的表达式快速找到需要的节点。 5. **事件处理**:dom4j也支持事件处理模型,允许开发者在XML解析过程中响应特定的...

    dom4j_dom4j1.6.1安装包_

    在本文中,我们将深入探讨DOM4J 1.6.1版本的安装及其在Maven项目中的应用。 首先,DOM4J是一个基于Java的XML处理库,它支持多种XML处理模型,如SAX和DOM。DOM4J的核心特性包括XML文档的构建、解析、查询和修改。它...

    dom4j-1.6.1 与 dom4j-2.0.0-ALPHA

    这次我们有两个版本的DOM4J库:1.6.1和2.0.0-ALPHA。这两个版本在功能、性能和API设计上都有所差异。 首先,DOM4J 1.6.1是较早的一个稳定版本,广泛应用于各种项目。它支持SAX和DOM解析器,同时提供了基于事件的...

    dom4j-1.6.1.jar下载

    dom4j-1.6.1.jar下载

    dom4j_1.6.1.jar dom4j_2.1.0.jar

    标题提及的"dom4j_1.6.1.jar"和"dom4j_2.1.0.jar"是两个不同版本的DOM4J库的Java档案文件,DOM4J是一个非常流行的Java XML API,用于处理XML文档。这两个版本的差异在于功能、性能优化和可能存在的bug修复。描述中...

    dom4j-1.6.1

    **DOM4J 1.6.1:Java XML API的卓越选择** DOM4J是一个针对Java平台的开源XML处理库,版本1.6.1是其历史中的一个重要里程碑。这个库以其高性能、全面的功能和易用性而备受赞誉,使得XML处理在Java开发中变得更加...

    dom4j-1.6.1.jar和ojdbc14_g.jar包

    《dom4j-1.6.1.jar与ojdbc14_g.jar:解析与应用》 在Java开发中,库文件扮演着至关重要的角色,它们提供了丰富的功能,帮助开发者节省时间和精力,专注于业务逻辑的实现。本文将详细介绍两个重要的Java库——dom4j-...

    dom4j-1.6.1.jar.zip

    mvn install:install-file -Dfile=d:\Downloads\dom4j-1.6.1.jar -DgroupId=org.dom4j -DartifactId=dom4j -Dversion=1.6.1 -Dpackaging=jar &lt;groupId&gt;org.dom4j &lt;artifactId&gt;dom4j &lt;version&gt;1.6.1&lt;/version...

    dom4j -1.6.1 源码 dom4j -1.6.1 源码

    4. **XPath**: dom4j支持XPath表达式,允许快速定位XML文档中的特定节点。 5. **Namespace**: 处理命名空间,使得在XML文档中可以正确处理同名元素。 **三、主要功能** 1. **读取XML**: dom4j提供了`DocumentReader...

    DOM4J jar包 xml解析 所有的dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1包 导入直接使用

    在项目中使用DOM4J时,只需将相应的jar包(如dom4j-1.6.1.jar、dom4j-2.0.2.jar或dom4j-2.1.1.jar)导入到类路径中,即可开始利用其功能处理XML文档。导入后,可以按照DOM4J提供的API进行编程,快速实现XML的读写...

    dom4j-1.6.1.jar (dom4j) 欢迎下载

    dom4j-1.6.1.jar,Dom4j是一个Java的XML API接口,是jdom的进化版,dom4j基本用来读写xml文件,是一个十分优秀的JavaXML API接口

    DOM4J-1.6.1

    用于解析XML的jar包,非常好用..

    dom4j-1.6.1.zip

    这表明在压缩包中,除了DOM4J的库文件外,还有一个名为“index.html”的文档,它可能是一个API参考手册或者快速入门指南,帮助用户快速了解DOM4J的用法和如何与XML文件交互。通常,这样的文档会包含API函数的详细...

    资源jar包dom4j-1.6.1.rar

    dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的...

    dom4j-1.6.1的包

    **DOM4J-1.6.1 包详解** DOM4J 是一个强大的 Java XML API,它提供了全面的 XML 解析、操作以及文档构建功能。这个包“dom4j-1.6.1”是 DOM4J 的一个特定版本,包含了该库的所有组件和资源,适用于 Android 平台的 ...

Global site tag (gtag.js) - Google Analytics