隨筆 - 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
          為什么只能讀取指定文檔而不是針對所有文檔都能讀取呢?這不是浪費代碼嗎?  回復  更多評論
            
          主站蜘蛛池模板: 清涧县| 阿拉善右旗| 通辽市| 扎赉特旗| 南宁市| 桂东县| 宾川县| 清水县| 沽源县| 天镇县| 德令哈市| 扎鲁特旗| 秀山| 晴隆县| 平邑县| 苏州市| 西畴县| 浦城县| 镇原县| 天门市| 葵青区| 城口县| 文化| 漳浦县| 新化县| 湟源县| 抚州市| 宜宾市| 嘉义市| 海淀区| 崇礼县| 浙江省| 旌德县| 宣恩县| 彭泽县| 海盐县| 武川县| 蓝田县| 兴安县| 长汀县| 家居|