Dom4j入门指南(3)

来源:互联网 发布:java开源web项目小型 编辑:程序博客网 时间:2024/05/29 10:59

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对象,这就节省了大量遍历时间和资源。是不是很灵活,嚎。。。(板砖)

 

创建XML

 

你也可以使用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写入文件

 

将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 );
    }
}

 


转自:http://blog.csdn.net/mgoann/article/details/4140393

0 0