JAVA中使用DOM解析XML文件


JAVA中使用DOM解析XML文件:
 
  1. 創建DocumentBuilderFactory的對象                                 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  2. 創建DocumentBuilder對象
  3. 通過documentBuilder對象的parser方法加載xml文件到當前項目下
  4. 獲取所有XML文件內節點的集合    getElementsByTagName()方法
  5. 遍歷每一個節點
  6. 通過item(i)方法獲取節點
  7. 獲取節點的所有屬性集合       getAttributes()方法
  8. 遍歷節點的屬性     getNodeValue()
  9. 通過item()方法獲取節點的屬性
  10. 通過getNodeName()和getNodeValue()獲取屬性名和屬性值
  11. 通過getChildNodes()獲取子節點的集合
  12. 遍 歷子節點,獲取子節點屬性名和屬性值 (注意: 區分text 類型的node,使用判斷         if(chilNod.item(k).getNodeType() == Node.ELEMENT_NODE))
以獲取book.XML文件為例,代碼如下:
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class DOMtest {
    public static void main(String[] args) {
        // 創建DocumentBuilderFactory的對象
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();    
        try {
            //創建DocumentBuilder對象
            DocumentBuilder db = dbf.newDocumentBuilder();
            //通過documentBuilder對象 的parser方法加載books。xml文件到當前項目下
            Document document = db.parse("books.xml");
            //獲取所有book節點的集合
            NodeList booklist = document.getElementsByTagName("book");
            System.out.println("一共有"+booklist.getLength()+"本書");
            //遍歷每一個book節點
            for(int i= 0; i<=booklist.getLength();i++){
                //通過item(i)方法獲取book節點
                Node book = booklist.item(i);
                //獲取book節點的所有屬性集合
                NamedNodeMap attrs = book.getAttributes();
                System.out.println("第"+(i+1)+"本書共有"+attrs.getLength()+"個屬性");
                //遍歷book的屬性
                for(int j = 0;j<attrs.getLength();j++){
                    //通過item方法獲取book節點的屬性
                    Node attr = attrs.item(j);
                    //獲取屬性名
                    System.out.print("屬性名:"+attr.getNodeName());
                    //獲取屬性值
                    System.out.println("--屬性值"+attr.getNodeValue());
                    NodeList chilNod = book.getChildNodes();
                    System.out.println("第"+(i+1)+"本書共有"+chilNod.getLength()+"個子節點");
                    for(int k = 0;k<chilNod.getLength();k++){
                        Node chil = chilNod.item(k);                 
                        //區分text 類型node
                        if(chilNod.item(k).getNodeType() == Node.ELEMENT_NODE){
                            System.out.print("子節點名:"+chil.getNodeName()+":");
                            System.out.println("    子節點值:"+chilNod.item(k).getFirstChild().getNodeValue());
                          //System.out.println("子節點值:"+chilNod.item(k).getTextContent());
                        }                                    
                    }
                }
            }
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM