Dom4j基础介绍
评论(0) 浏览量(11075)

Dom4j介绍

DOM4j是一个易用的,开源的JAVA操作XML的API,DOM4j是性能和易用性相比其他框架都比较优秀。
DOM4j所有的接口都在org.dom4j这个包里定义着:
org.dom4j.Attribute : Attribute接口定义了XML文件的属性
org.dom4j.Branch  : Branch为能够包含子节点的节点如XML元素和文档定义了一个公共行为
org.dom4j.CDATA  : CDATA定义了XML CDATA区域
org.dom4j.CharacterData: CharacterData是一个标识接口,标识基于字符的节点。
org.dom4j.Comment  : Comment定义了XML注释的行为
org.dom4j.Document : Docement接口定义了XML文档
org.dom4j.Element   : Element定义了XML元素
org.dom4j.ElementHandler: ElementHandler定义了Element对象的处理器
org.dom4j.ElementPath : 被ElementHandler使用,用于取得当前正在处理的路径层次信息
org.dom4j.Entity : Entity定义XML entity
org.dom4j.Node :   Node为所有的dom4j中XML节点定义了多态行为
org.dom4j.NodeFilter :  NodeFilter定义了在dom4j节点中产生的一个滤镜或谓词的行为
org.dom4j.ProcessingInstruction : ProcessingInstruction定义XML处理指令
org.dom4j.Text   : Test定义了XML文本节点
org.dom4j.Visitor : Visitor用于实现Visitor模式
org.dom4j.XPath : XPath在分析一个字符串后会提供一个XPath表达式

1:  读取并解析XML文档:

读写XML文档主要依赖于org.dom4j.io包,提供了DOMReader和SAXReader两类不同方式,调用方式一样。

// 从文件读取XML,输入文件名,返回XML文档

    public Document read(String fileName) throws MalformedURLException, DocumentException {

              SAXReader reader = new SAXReader();

           Document document = reader.read(new File(fileName));

           return document;

}

2:取得ROOT节点
   如果要读取一个XML文件,最重要的就是要读取ROOT节点了,一切分析XML都是从ROOT节点开始。

public Element getRootElement(Document doc){

        return doc.getRootElement();

}

3:遍历XML树,这里有二种方法
   (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) :  递归

public void treeWalk() {

       treeWalk(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....

           }

              }

       }

4:字符串与XML的转换

// XML转字符串

    Document document = ...;

    String text = document.asXML();

       // 字符串转XML

    String text = James ;

    Document document = DocumentHelper.parseText(text);

5. 创建XML

//这里创建一个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;

    }

6: XML 文件输出

FileWriter out = new FileWriter( foo.xml );

document.write(out);

没有登录不能评论