學(xué)習(xí)sax解析xml心得

          可以使用SAXParser的parse方法進(jìn)行解析,也可以使用XmlReader的parse方法進(jìn)行解析,但是最好是使用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 字符數(shù)組包括整個文檔。應(yīng)用程序一定不能嘗試讀取饋送給 characters() 事件的范圍之外的字符。
                      }

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


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

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

          導(dǎo)航

          統(tǒng)計

          留言簿(1)

          文章分類(141)

          文章檔案(147)

          搜索

          最新評論

          主站蜘蛛池模板: 富阳市| 馆陶县| 上高县| 徐闻县| 闻喜县| 凭祥市| 永德县| 乌鲁木齐市| 胶南市| 义乌市| 克山县| 托里县| 恩平市| 上饶市| 遵化市| 察雅县| 乐业县| 密云县| 仪陇县| 鄂伦春自治旗| 会同县| 清苑县| 荔波县| 广灵县| 郑州市| 神木县| 承德市| 翁源县| 甘洛县| 莫力| 梨树县| 安吉县| 茂名市| 平塘县| 尼玛县| 河池市| 邵阳县| 卢湾区| 嵊泗县| 石林| 藁城市|