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