dom4j使用

dom4j是一个dom4j.org出品的开源的库,常用于解析xml,dom4j最大的特点是简单易用。这里介绍一下dom4j使用:

 

1.获取document

首先创建SAXReader对象reader,然后使用reader读取xml对应Url或者对应InputStream流。

URL url = XmlUtil.class.getClassLoader().getResource(filePath);
SAXReader reader = new SAXReader();
Document document = reader.read(url);

 

2.使用Iterator遍历document的元素和属性

首先获取root根元素,然后获取根节点的Iterator,使用Iterator遍历元素子元素

Element root = document.getRootElement();
/* 遍历所有子元素 */
for(Iterator i = root.elementIterator();i.hasNext();){
    Element element = (Element) i.next();
}
/* 遍历所有指定名称子元素 */
for (Iterator i = root.elementIterator("div"); i.hasNext();) {
    Element dir = (Element) i.next();
}
/* 遍历元素下所有属性 */
for (Iterator i = root.attributeIterator();i.hasNext();){
    Attribute attr = (Attribute) i.next();
}

 

 3.使用xpath获取元素和属性

List<Node> list = document.selectNodes("/root/dir"); //获取元素列表
Node node = document.selectSingleNode("/root/dir[@id='node']"); //获取单个元素
String attr= node.valueOf("@style"); //获取元素属性

  

4.fast looping

遍历很大的xml文件时,使用 Iterator会创建大量的Iterator Object,消耗内存,这时可以考虑使用递归方式遍历xml文件。

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

 

5.创建document

使用DocumentHelper创建新的document,在document下添加root元素,然后可以在root元素下创建各种节点。

Document newDocument = DocumentHelper.createDocument();
Element newRoot = newDocument.addElement("root");
Element author1 = newRoot.addElement( "author" )
        .addAttribute( "name", "James" )
        .addAttribute( "location", "UK" )
        .addText( "James Strachan" );

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

 

6.将document写入文件

使用XMLWriter将document写入文件,实际使用需要在finally中关闭writer。

XMLWriter writer = new XMLWriter(new FileWriter(filepath));
writer.write(document);
writer.close();

 

7.格式化输出document

创建带有OutputFormat的XMLWriter可以实现对document的格式化输出。

OutputFormat format = null;

format = OutputFormat.createPrettyPrint();//排版 XMLWriter writer = new XMLWriter(System.out, format); writer.write(document);
format
= OutputFormat.createCompactFormat();//紧凑 writer = new XMLWriter(System.out, format); writer.write(document);

 

8.document转成String

String xmlText = document.asXML();

 

 

 

代码摘自官方文档                                              

参考文献:https://github.com/dom4j/dom4j/wiki


posted @ 2018-09-08 04:43  静卧听风  阅读(1715)  评论(0编辑  收藏  举报