學習sax解析xml心得

          可以使用SAXParser的parse方法進行解析,也可以使用XmlReader的parse方法進行解析,但是最好是使用XmlReader,因為XmlReader是接口。
          基本的初始化方法如下:
          File f=new File("d:"+File.separator+"e.xml");
                  InputSource ip=new InputSource(new FileInputStream(f));
                  try {
                      SAXParser  s=SAXParserFactory.newInstance().newSAXParser();
                      XMLReader xmlReader=s.getXMLReader();
                      xmlReader.setContentHandler(new MyHandler());
                      xmlReader.parse(ip);
                      
                  } catch (ParserConfigurationException e) {
                      e.printStackTrace();
                  } catch (SAXException e) {
                      e.printStackTrace();
                  }

          其中MyHandler類繼承了DefaultHandler,可以overwrite其中的方法,使其滿足需求。
          例子:

          public void startElement(String uri, String localName, String name,
                          Attributes attributes) throws SAXException {

                      if (logger.isInfoEnabled()) {
                          logger
                                  .info("startElement(String, String, String, Attributes) - uri="
                                          + uri
                                          + ", localName="
                                          + localName
                                          + ", name="
                                          + name );
                      }

                      for (int i = 0; i < attributes.getLength(); i++) {
                          if (logger.isInfoEnabled()) {
                              logger.info("endElement(String, String, String) - uri=" + uri
                                      + ", localName=" + localName + ", qName=" + attributes.getQName(i)+ ", attributes=" + attributes.getValue(i));
                          }
                      }
                      

                      super.startElement(uri, localName, name, attributes);
                  }
          //對text node的處理
          public void characters(char[] ch, int start, int length)
                          throws SAXException {
                      if (logger.isInfoEnabled()) {
                          logger.info("characters(char[], int, int) - ch="+ new String(ch,start,length));//這里這樣子寫才能得到text node 真正的值。范圍: characters() 事件不僅包括不僅一個字符串。它還包括起始和長度信息。實際上,ch 字符數組包括整個文檔。應用程序一定不能嘗試讀取饋送給 characters() 事件的范圍之外的字符。
                      }

                      super.characters(ch, start, length);
                  }


          posted on 2007-11-15 17:27 劉錚 閱讀(305) 評論(0)  編輯  收藏 所屬分類: XML

          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導航

          統計

          留言簿(1)

          文章分類(141)

          文章檔案(147)

          搜索

          最新評論

          主站蜘蛛池模板: 九龙县| 博客| 隆安县| 哈密市| 余江县| 峨山| 龙海市| 台湾省| 无锡市| 庄浪县| 自贡市| 黔西县| 云南省| 宿州市| 湘西| 从化市| 富阳市| 云梦县| 马山县| 曲水县| 云和县| 永仁县| 瑞昌市| 运城市| 泌阳县| 胶州市| 同仁县| 扶余县| 昌宁县| 伊春市| 监利县| 武鸣县| 琼结县| 五华县| 泽普县| 治多县| 邵阳县| 肃宁县| 大城县| 台中县| 水富县|