Dom4j 解析xml文件

    xml文档在越来越多的得到应用,解析xml的工具也很多,android也有自带的工具。dom4j也是一种解析工具,它可以对xml进行读写,感觉它更加的简单易使用。在这里简单介绍一下。在dom4j.org (点击)到官网下载。解压后有一个dom4j-xx.jar这个就是我们需要的包。如果打不开官网可以在这里下载http://dom4j.sourceforge.net/

Attribute定义了XML的属性
Branch为能够包含子节点的节点如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为,
CDATA 定义了XML CDATA 区域
CharacterData是一个标识借口,标识基于字符的节点。如CDATA,Comment, Text.
Comment 定义了XML注释的行为
定义了XML文档
DocumentType 定义XML DOCTYPE声明
Element定义XML 元素
ElementHandler定义了 Element 对象的处理器
被  ElementHandler 使用,用于取得当前正在处理的路径层次信息
Entity定义 XML entity
Node为所有的dom4j中XML节点定义了多态行为
NodeFilter 定义了在dom4j节点中产生的一个滤镜或谓词的行为(predicate)
ProcessingInstruction 定义 XML 处理指令.
Text 定义XML 文本节点.
Visitor 用于实现Visitor模式.
XPath 在分析一个字符串后会提供一个XPath 表达式

   这是dom4j的一些接口说明,官网都有详细的解析。这里只是简单介绍一下使用情况。   

   SAXReader reader =  new SAXReader();
   Document document = reader.read( new File(fileName));
   read函数中的fileName 就是要解析的文档路径名,是一个字符串。document就是这个要解析的文档了。这个read函数是重载函数,变量可以是InputStream, Url等。得到文件之后就是要取得根节点了。
   Element rootElement = document.getRootElement();就可以取得跟节点rootElement,因为无论怎样解析xml都是要遍历整个文件,在这里取得rootElement跟节点就是遍历的开始位置。
   取得跟节点之后就可以遍历所有子节点了。
   for ( Iterator i = rootElement.elementIterator(); i.hasNext(); ) {
       Element element = (Element) i.next();
       // do something
    }
   这是遍历整个文件的方法,当你得到一个想要的节点时,如果它下面还有子标签,仍用这种方法遍历。有的节点有很多属性,下面介绍遍历属性的方法。
    
    for ( Iterator i = rootElement.attributeIterator(); i.hasNext(); ) {
       Attribute attribute = (Attribute) i.next();
       // do something
    }
    这就是遍历节点属性的方法。
    
public void generateDocument(){
Document document = DocumentHelper.createDocument();
     Element catalogElement = document.addElement("catalog");
     catalogElement.addComment("An XML Catalog");
     catalogElement.addProcessingInstruction("target","text");
     Element journalElement =  catalogElement.addElement("journal");
     journalElement.addAttribute("title", "XML Zone");
     journalElement.addAttribute("publisher", "IBM developerWorks");
     Element articleElement=journalElement.addElement("article");
     articleElement.addAttribute("level", "Intermediate");
     articleElement.addAttribute("date", "December-2001");
     Element  titleElement=articleElement.addElement("title");
     titleElement.setText("Java configuration with XML Schema");
     Element authorElement=articleElement.addElement("author");
     Element  firstNameElement=authorElement.addElement("firstname");
     firstNameElement.setText("Marcello");
     Element lastNameElement=authorElement.addElement("lastname");
     lastNameElement.setText("Vitaletti");
     document.addDocType("catalog",
                           null,"file://c:/Dtds/catalog.dtd");
    try{
    XMLWriter output = new XMLWriter(
            new FileWriter( new File("c:/catalog/catalog.xml") ));
        output.write( document );
        output.close();
        }
     catch(IOException e){System.out.println(e.getMessage());}
}
    以上是一个关于写的例子。因为在工作中没有应用到写功能。一些细节也许没有注意到。具体的API说明在http://dom4j.sourceforge.net/dom4j-1.6.1/apidocs/ 。 无论怎样还是官网的更准确详细。

猜你喜欢

转载自blog.csdn.net/alvinhuai/article/details/9037279