Dom4j入门指南(3)
如果你处理的XML文件很大,这个时候建议你最好使用dom4j提供的快速遍历方法,这个可以满足你对性能的需求,因为dom4j快速遍历不会为每层循环都创建一个Iterator对象。是不是说的云里雾里的,其实我也晕了,不怕,咋来动个手就明白了。
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....
}
}
}
Node node = element.node(i);关键是这一句,我们直接通过element下标就可以遍历节点,而避免了为此创建Iterator对象,这就节省了大量遍历时间和资源。是不是很灵活,嚎。。。(板砖)
你也可以使用dom4j来创建一个XML文件。还是出招吧,总感觉不踏实,呵呵。。。
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;
}
看的出使用dom4j创建一个XML也是相当容易哈,想要标签就addElement,想要属性就addAttribute,想要文本就addText,想要花姑娘你就add。。,等等你小子还想要什么啊,(apache大叔手里拿着板砖,恶狠狠看着这边。。。)。哈,做人不能太贪心,今天咋就要到这里吧,要不apache大叔要发火了~
下面是打印document对象的结果
<?xml version="1.0" encoding="UTF-8"?>
<root>
<author name="James" location="UK">James Strachan</author>
<author name="Bob" location="US">Bob McWhirter</author>
</root>
将document文件写成文件最快也是最简单的方法就是使用write(),地球人都知道哈。
FileWriter out = new FileWriter(“foo.xml”);
document.write(out);
如果你想对输出方式进行格式化输出,你可以采用平板式,也可以采用紧密式,也可以使用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 {
// lets write to a file
XMLWriter writer = new XMLWriter(
new FileWriter( "output.xml" )
);
writer.write( document );
writer.close();
// Pretty print the document to System.out
OutputFormat format = OutputFormat.createPrettyPrint();
writer = new XMLWriter( System.out, format );
writer.write( document );
// Compact format to System.out
format = OutputFormat.createCompactFormat();
writer = new XMLWriter( System.out, format );
writer.write( document );
}
}
分享到:
相关推荐
dom4j相关知识,适合入门。 DOM4J使用起来非常简单。只要你了解基本的XML-DOM模型,就能使用。然而他自己带的指南只有短短一页(html),不过说的到挺全。国内的中文资料很少。因而俺写这个短小的教程方便大家使用...
通常需要复制cglib,dom4j,jakarta-commons,log4j等文件夹下的jar文件。 (4)为了编译java文件,可以找到Spring的基础类,将Spring.jar文件的路径添加到环境变量CLASSPATH中。当然,也可以使用ANT工具,但无须...
4.DOM则为脚本和对象的交流提供一个公共平台,并将结果显示在浏览器窗口。 如果任何一个部分发生错误,都不会得到正确结果。 好了,看到这里,我们已经对XML是如何工作的有一个整体的大致的概念。通过这一章的...
入门指引 1. 简介 2. 简明教程 II. 安装与配置 3. 安装前需要考虑的事项 4. Unix 系统下的安装 5. Mac OS X 系统下的安装 6. Windows 系统下的安装 7. PECL 扩展库安装 8. 还有问题? 9. 运行时配置 III. 语言参考 ...
入门指引 1. 简介 2. 简明教程 II. 安装与配置 3. 安装前需要考虑的事项 4. Unix 系统下的安装 5. Mac OS X 系统下的安装 6. Windows 系统下的安装 7. PECL 扩展库安装 8. 还有问题? 9. 运行时配置 III. 语言参考 ...
J. 保留字列表 K. 资源类型列表 L. 支持的协议/封装协议列表 M. 可用过滤器列表 N. 所支持的套接字传输器(Socket Transports)列表 O. PHP 类型比较表 P. 解析器代号列表 Q. 关于本手册 R. 开放出版许可...
J. 保留字列表 K. 资源类型列表 L. 支持的协议/封装协议列表 M. 可用过滤器列表 N. 所支持的套接字传输器(Socket Transports)列表 O. PHP 类型比较表 P. 解析器代号列表 Q. 关于本手册 R. 开放出版许可协议 S. ...
J. 保留字列表 K. 资源类型列表 L. 支持的协议/封装协议列表 M. 可用过滤器列表 N. 所支持的套接字传输器(Socket Transports)列表 O. PHP 类型比较表 P. 解析器代号列表 Q. 关于本手册 R. 开放出版许可协议 S. ...
入门指引 1. 简介 2. 简明教程 II. 安装与配置 3. 安装前需要考虑的事项 4. Unix 系统下的安装 5. Mac OS X 系统下的安装 6. Windows 系统下的安装 7. PECL 扩展库安装 8. 还有问题? 9. 运行时配置 III. 语言参考 ...
J. 保留字列表 K. 资源类型列表 L. 支持的协议/封装协议列表 M. 可用过滤器列表 N. 所支持的套接字传输器(Socket Transports)列表 O. PHP 类型比较表 P. 解析器代号列表 Q. 关于本手册 R. 开放出版许可协议 S. ...
J. 函数别名列表 K. 保留字列表 L. 资源类型列表 M. 支持的协议/封装协议列表 N. 可用过滤器列表 O. 所支持的套接字传输器(Socket Transports)列表 P. PHP 类型比较表 Q. 解析器代号列表 R. 关于本手册 S. 开放...