Dom4j解析XML文件

一、Dom4j是當下比較流行的用來幫助解析xml文件的jar。

下載地址: http://www.dom4j.org/dom4j-1.6.1/ 點擊download now就能夠下載了。html


 

二、使用概覽:

首先,在下載的文件中 docs/index.html中有詳細的解釋說明,能夠參考學習。java

2.1 XML File -> document (Read the XML File)

 SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File("four.xml"));
 

2.2 Using Iterators

// iterate through child elements of root
for ( Iterator i = root.elementIterator(); i.hasNext(); ) {
    Element element = (Element) i.next();
    // do something
}

// iterate through child elements of root with element name "foo"
for ( Iterator i = root.elementIterator( "foo" ); i.hasNext(); ) {
    Element foo = (Element) i.next();
    // do something
}

// iterate through attributes of root 
for ( Iterator i = root.attributeIterator(); i.hasNext(); ) {
    Attribute attribute = (Attribute) i.next();
    // do something
}

2.3 遞歸遍歷:

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....
            }
        }
    }

2.4 建立document:

1.讀取XML文件,得到document對象              
        AXReader reader = new SAXReader();              
        Document   document = reader.read(new File("csdn.xml"));  
2.解析XML形式的文本,獲得document對象.  
        String text = "<csdn></csdn>";           
        Document document = DocumentHelper.parseText(text);  
3.主動建立document對象.  
        Document document = DocumentHelper.createDocument();            
        Element root = document.addElement("csdn");  

2.5 document/element/node轉換爲String(其實都用到一個函數,就是asXML)

String text = document.asXML();

2.6 寫XML文件:(兩種方式)

第一種:簡易格式:(不考慮編碼,不考慮格式)
XMLWriter xmlWriter = new XMLWriter(new FileWriter("four.xml");
xmlWriter.write(document);
xmlWriter.close();

第二種:精確格式:(考慮編碼,考慮格式)
OutputFormat of = OutputFormat.createPrettyPrint();
//OutputFormat of = new OutputFormat();
of.setEncoding("utf-8");
XMLWriter xmlWriter = new XMLWriter(new FileWriter("four.xml"), of);
xmlWriter.write(document);
xmlWriter.close();

注意:一般咱們設置了輸出文件的字符格式,仍要主要java文件的字符格式是什麼,若是二者不一致,依然會產生中文亂碼錯誤。node

java文件的編碼一般爲GBK,調整在window->preference下:spring

2.7:節點操做對象方法:轉自: http://blog.csdn.net/redarmy_chen/article/details/12969219

1.獲取文檔的根節點.  
      Element root = document.getRootElement();  
    2.取得某個節點的子節點.  
      Element element=node.element(「四大名著");  
    3.取得節點的文字  
        String text=node.getText();  
    4.取得某節點下全部名爲「csdn」的子節點,並進行遍歷.  
       List nodes = rootElm.elements("csdn");   
         for (Iterator it = nodes.iterator(); it.hasNext();) {     
      Element elm = (Element) it.next();    
    // do something  
 }  
     5.對某節點下的全部子節點進行遍歷.      
      for(Iterator it=root.elementIterator();it.hasNext();){        
        Element element = (Element) it.next();        
       // do something   
 }  
    6.在某節點下添加子節點  
      Element elm = newElm.addElement("朝代");  
    7.設置節點文字.  elm.setText("明朝");  
    8.刪除某節點.//childElement是待刪除的節點,parentElement是其父節點  parentElement.remove(childElment);  
    9.添加一個CDATA節點.Element contentElm = infoElm.addElement("content");contentElm.addCDATA(「cdata區域」);  

來自 <http://blog.csdn.net/redarmy_chen/article/details/12969219> 

 

2.8:節點對象屬性操做:轉自: http://blog.csdn.net/redarmy_chen/article/details/12969219

1.取得某節點下的某屬性    Element root=document.getRootElement();        //屬性名name  
         Attribute attribute=root.attribute("id");  
    2.取得屬性的文字  
    String text=attribute.getText();  
    3.刪除某屬性 Attribute attribute=root.attribute("size"); root.remove(attribute);  
    4.遍歷某節點的全部屬性     
      Element root=document.getRootElement();        
       for(Iterator it=root.attributeIterator();it.hasNext();){          
           Attribute attribute = (Attribute) it.next();           
           String text=attribute.getText();          
           System.out.println(text);    
  }  
    5.設置某節點的屬性和文字.   newMemberElm.addAttribute("name", "sitinspring");  
    6.設置屬性的文字   Attribute attribute=root.attribute("name");   attribute.setText("csdn");  

來自 <http://blog.csdn.net/redarmy_chen/article/details/12969219> 
相關文章
相關標籤/搜索