隨筆 - 154  文章 - 60  trackbacks - 0
          <2014年1月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          聲明:

          該blog是為了收集資料,認識朋友,學習、提高技術,所以本blog的內容除非聲明,否則一律為轉載!!

          感謝那些公開自己技術成果的高人們!!!

          支持開源,尊重他人的勞動!!

          常用鏈接

          留言簿(3)

          隨筆分類(148)

          隨筆檔案(143)

          收藏夾(2)

          其他

          學習(技術)

          觀察思考(非技術)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          xml文件:

          <?xml version="1.0" encoding="GB2312" standalone="no"?>
          <books>
              
          <book email="zhoujunhui">
                  
          <name>rjzjh</name>
                  
          <price>jjjjjj</price>
              
          </book>
          </books>

          代碼:

          import java.io.FileInputStream;
          import java.io.FileNotFoundException;
          import java.io.IOException;
          import java.io.InputStream;
          import javax.xml.parsers.DocumentBuilder;
          import javax.xml.parsers.DocumentBuilderFactory;
          import javax.xml.parsers.ParserConfigurationException;
          //下面主要是org.xml.sax包的類
          import org.w3c.dom.Document;
          import org.w3c.dom.Element;
          import org.w3c.dom.Node;
          import org.w3c.dom.NodeList;
          import org.xml.sax.SAXException;

          public class DomParse {

              
          public DomParse(){
                  
          //(1)得到DOM解析器的工廠實例
                  DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();
                  
          //得到javax.xml.parsers.DocumentBuilderFactory;類的實例就是我們要的解析器工廠
                  try {
                      
          //(2)從DOM工廠獲得DOM解析器
                      DocumentBuilder dombuilder=domfac.newDocumentBuilder();
                      
          //通過javax.xml.parsers.DocumentBuilderFactory實例的靜態方法newDocumentBuilder()得到DOM解析器
                      
          //(3)把要解析的XML文檔轉化為輸入流,以便DOM解析器解析它
                      InputStream is=new FileInputStream("test1.xml");            
                      
          //(4)解析XML文檔的輸入流,得到一個Document
                      Document doc=dombuilder.parse(is);
                      
          //由XML文檔的輸入流得到一個org.w3c.dom.Document對象,以后的處理都是對Document對象進行的
                      
          //(5)得到XML文檔的根節點
                      Element root=doc.getDocumentElement();
                      
          //在DOM中只有根節點是一個org.w3c.dom.Element對象。
                      
          //(6)得到節點的子節點
                      NodeList books=root.getChildNodes();
                      
                      
          if(books!=null){
                          
          for(int i=0;i<books.getLength();i++){
                              Node book
          =books.item(i);
                              
          if(book.getNodeType()==Node.ELEMENT_NODE){
                                  
          //(7)取得節點的屬性值
                                  String email=book.getAttributes().getNamedItem("email").getNodeValue();
                                  System.out.println(email);
                                  
          //注意,節點的屬性也是它的子節點。它的節點類型也是Node.ELEMENT_NODE
                                  
          //(8)輪循子節點
                                  for(Node node=book.getFirstChild();node!=null;node=node.getNextSibling()){
                                      
          if(node.getNodeType()==Node.ELEMENT_NODE){
                                          
          if(node.getNodeName().equals("name")){
                                              String name
          =node.getNodeValue();
                                              String name1
          =node.getFirstChild().getNodeValue();
                                              System.out.println(name);
                                              System.out.println(name1);
                                          }

                                          
          if(node.getNodeName().equals("price")){
                                              String price
          =node.getFirstChild().getNodeValue();
                                              System.out.println(price);
                                          }

                                      }

                                  }

                              }

                          }
          //(6)這是用一個org.w3c.dom.NodeList接口來存放它所有子節點的,還有一種輪循子節點的方法,后面有介紹
                      }

                  }
           catch (ParserConfigurationException e) {
                      e.printStackTrace();
                  }
           catch (FileNotFoundException e) {
                      e.printStackTrace();
                  }
           catch (SAXException e) {
                      e.printStackTrace();
                  }
           catch (IOException e) {
                      e.printStackTrace();
                  }

              }


              
          public static void main(String[] args) {
                  
          new DomParse();
              }

          }


          這段代碼的打印輸出為:

            null

            alterrjzjh

            jjjjjj

            從上面可以看出

            String name=node.getNodeValue();

            是一個空值。而

            String name1=node.getFirstChild().getNodeValue();

            才是真正的值,這是因為DOM把<name>rjzjh</name>也當作是兩層結構的節點,其父節點

          posted on 2007-11-21 14:47 lk 閱讀(14182) 評論(2)  編輯  收藏 所屬分類: xml

          FeedBack:
          # re: java 讀xml文件例子[未登錄] 2012-10-31 17:56 hh
          hh  回復  更多評論
            
          # re: java 讀xml文件例子[未登錄] 2014-01-25 21:02 啦啦啦
          @hh
          為什么只能讀取指定文檔而不是針對所有文檔都能讀取呢?這不是浪費代碼嗎?  回復  更多評論
            
          主站蜘蛛池模板: 万全县| 林州市| 会昌县| 余姚市| 肥城市| 杭锦旗| 依安县| 大化| 大兴区| 曲靖市| 赫章县| 界首市| 化德县| 宜章县| 绥滨县| 东台市| 水城县| 鲜城| 惠来县| 武山县| 舞钢市| 江孜县| 惠安县| 自治县| 太原市| 平潭县| 化州市| 普定县| 长武县| 双柏县| 香格里拉县| 桐梓县| 乌苏市| 中超| 永仁县| 治县。| 江山市| 左云县| 陆良县| 苍南县| 巴彦县|