java解析XML文件四種方法之引入源文件


1.DOM解析(官方)

   try {

         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
         DocumentBuilder               db = dbf.newDocumentBuilder();
         Document                document = db.parse("file");
         NodeList                              list = document.getElementsByTagName("ndoe");//常規的DOM操作
   } catch (Exception e) {
         e.printStackTrace();
   }

   parse()方法加載XML文件到當前程序。

   將XML文件全部加載到內存中,然后逐個解析。

2.SAX解析(官方)

   try {

         SAXParserFactory factory = SAXParserFactory.newInstance();
         SAXParser               parser = factory.newSAXParser();
         parser.parse("file",handler);
   }catch (Exception e) {
        e.printStackTrace();
   }

   參數handler是一個繼承了DefaultHandler類的子類的實例化對象。

   這個子類中解析文檔、元素的方法如下:

   --------startDocument()                                      //解析XML文件開始

   -----------------------startElement()                       //開始解析某個元素

   -----------------------endElement()                        //結束解析該元素(通常將解析獲得的信息存到一個對象)

   -----------------------startElement()                       //開始解析另一個個元素

   -----------------------endElement()                        //結束解析元素

   ---------endDocument()                                      //解析XML文件結束

   SAX解析XML文件的方法是從頭到尾一步一步地解析文檔的節點元素,是一種事件驅動模式,對內存耗費

   較小。

3.JDOM解析(非官方,DOM的拓展)

   需要事先導入一個JDOM的jar包到項目。后面導入的類也是JDOM包下的的類

   try {

          SAXBuilder saxbuilder = new SAXBuilder();
          Document    document = saxbuilder.build("file");
          Element    rootElement = document.getRootElement(); //獲得XML文件的根節點
   }catch (Exception e) {
          e.printStackTrace();
   }

   獲得根節點之后,通過getChildren()方法獲得其子節點的List集合。

4.DOM4J解析(非官方,DOM的拓展,現在比較流行的)

   同理,由於是非官方的,我們依然需要引入一個DOM4J的jar包

   try {

         SAXReader    reader = new SAXReader();
         Document document = reader.read("file");
         Element rootElement = document.getRootElement();//獲得XML文件的根節點
   }catch (Exception e) {
         e.printStackTrace();
   }

   性能優異,靈活性好,功能強大,易使用,所以現在比較流行使用DOM4J解析XML。

注意:以上所有引入文件方法的參數"file",可以是文件路徑字符串,可以是一個文件對象,也可以是

           一個文件輸入流對象。

 


免責聲明!

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



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