dom4j初识


dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在IBM developerWorks上面可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,dom4j无论在那个方面都是非常出色的。如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这是必须使用的jar包, Hibernate用它来读写配置文件。

1、读取xml文件  示例

1     // 从文件读取XML,输入文件名,返回XML文档
2     public Document read(String fileName)
3  throws MalformedURLException, DocumentException {
4        SAXReader reader = new SAXReader();
5        Document document = reader.read(new File(fileName));
6        return document;
7     }


    SAXReader :就像一根管道利用流的方式去文件里面将xml的内容给读出来。
    Document : 理解为整个xml文档的对象。如果xml很小会整个读取过来,如果xml文件很大则读取一部分。

2、需要先获取的root节点。就是根节点

1    public Element getRootElement(Document doc){
2        return doc.getRootElement();
3     }


 3、遍历所有子节点
    1)枚举

 // 枚举所有子节点
        for ( Iterator i = root.elementIterator(); i.hasNext(); ) {
               Element element = (Element) i.next();
               // do something
        }
            // 枚举名称为foo的节点
        for ( Iterator i = root.elementIterator(foo); i.hasNext();) {
               Element foo = (Element) i.next();
               // do something
        }
            // 枚举属性
        for ( Iterator i = root.attributeIterator(); i.hasNext(); ) {
               Attribute attribute = (Attribute) i.next();
           // do something
        }


    2)递归    

 

 1  public void treeWalk() {
 2                treeWalk(getRootElement());
 3         }
 4         public void treeWalk(Element element) {
 5                for (int i = 0, size = element.nodeCount();
 6                    i < size; i++)         {
 7                    Node node = element.node(i);
 8                    if (node instanceof Element) {
 9                           treeWalk((Element) node);
10                    } else { // do something....
11                     }
12                }
13           }            

更多请参考以下链接

http://www.blogjava.net/i369/articles/154264.html

 


posted @ 2013-05-14 16:46  薛遗山  阅读(233)  评论(0编辑  收藏  举报