Dom4J解析XML

在平时java开发工作中,经常要用到xml文件保存相关的数据等,那么java如何解析XML文件呢?java本身提供了SAX和DOM方式对xml文件进行解析,另外还有两种开源工具对xml进行解析,分别是DOM4J和JDOM。

SAX:Simple API for XML
DOM:Document Object Model
JDOM:Java-based Document Object Model
DOM4J:Document Object Model for Java

现在的开发中,我们经常要用到DOM4J对XML文件进行解析,这是因为相比较而言,DOM4J性能最好,连Sun的JAXM也在用DOM4J。目前许多开源项目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J。下面来看用DOM4J如何解析XML文件:

一、引包

引入dom4j-1.6.1.jar包,以确保能够正常使用dom4j解析XML文件。

二、解析XML文件

1、产生一个解析器对象

SAXReader reader = new SAXReader(); 

2、将xml文档转换为Document的对象

Document document = reader.read(new FIle(filePathName)); 

3、获取文档的根元素

Element root = document.getRootElement();

4、定义一个Iterator遍历根节点下面的所有节点

Iterator it = root.elementIterator();
while(it.hasNext()){
    Element element = (Element) it.next();

    //未知属性名称情况下,逐个遍历此元素的所有属性,取出属性对应的值
    Iterator attrIt = element.attributeIterator();
    while (attrIt.hasNext()) {
        Attribute attr  = (Attribute) attrIt.next();
        System.out.println(attr.getValue());
    }

    //已知属性名称的情况下,可以直接通过属性名称获取对应的值
    String name = element.attributeValue("name");//获取name属性对应的值

    //同样可以遍历该元素下所有的节点,未知节点名称情况下,逐个遍历
    Iterator it =  element.elementIterator();
    while(it.hasNext()){
        Element e = (Element) it.next();
        System.out.println(e.getName() + ": " + e.getText()); //获取节点名称以及节点对应的文本值
    }

    //已知节点名称nodeName的情况下,可以直接通过节点名称获取对应的值
    String nodeValue = element.elementText(nodeName);
}

至此,DOM4J解析XML的功能就结束了。

你可能感兴趣的:(Dom4J解析XML)