Read Sean

          Read me, read Sean.
          posts - 508, comments - 655, trackbacks - 9, articles - 4

          [XML學習筆記][3.1]通過JAXP使用SAX

          Posted on 2005-02-24 22:13 laogao 閱讀(281) 評論(0)  編輯  收藏 所屬分類: On Java

          在前面的筆記中,我們曾經提到讀取XML數據的兩種截然不同的方式,SAX就是其中一種。來看一段代碼:

          /*
           * Created on 2005-2-24
           * All rights reserved.
           * 
           
          */

          package sean.home.test;

          import java.io.File;

          import javax.xml.parsers.SAXParser;
          import javax.xml.parsers.SAXParserFactory;

          import org.xml.sax.Attributes;
          import org.xml.sax.SAXException;
          import org.xml.sax.helpers.DefaultHandler;

          /**
           * @author Sean GAO
           *         <p>
           *         gaoyuxiang@gmail.com
           *         </p>
           * 
           
          */

          public class Main {

              
          public static void main(String[] args) throws Exception {

                  SAXParserFactory factory 
          = SAXParserFactory.newInstance();
                  SAXParser parser 
          = factory.newSAXParser();

                  DefaultHandler myHandler 
          = new DefaultHandler() {

                      
          public void startDocument() throws SAXException {
                          System.
          out.println("XML document starts ");
                      }


                      
          public void endDocument() throws SAXException {
                          System.
          out.println("XML document ends ");
                      }


                      
          public void startElement(String uri, String localName,
                              String qualifiedName, Attributes attributes)
                              throws SAXException 
          {
                          System.
          out.println("element " + qualifiedName + "starts ");
                      }


                      
          public void endElement(String uri, String localName,
                              String qualifiedName) throws SAXException 
          {
                          System.
          out.println("element " + qualifiedName + "ends ");
                      }


                      
          public void characters(char[] ch, int start, int length) {
                          System.
          out.println(new String(ch, start, length));
                      }


                  }
          ;
                  
                  parser.parse(
          new File(args[0]), myHandler);
                  
              }

          }



          在這段代碼中,我們通過SAXParserFactory獲取一個parser,然后自定義一個Handler去處理由SAX讀取XML文件時觸發的事件,如startDocument表示文檔開始,endElement表示元素讀取結束,characters表示在元素體內讀到內容等等。這里我為了方便直接寫成匿名內部類了,Exception也沒有做任何處理,這在實際中通常是不合理的。

          基本上SAX的實現和使用都很直截了當,就是處理一個個事件罷了。
          主站蜘蛛池模板: 普兰店市| 广灵县| 松滋市| 淳化县| 夏河县| 余庆县| 淮安市| 扎兰屯市| 沁水县| 独山县| 体育| 当涂县| 安乡县| 琼海市| 叙永县| 绥江县| 扶余县| 阿鲁科尔沁旗| 花莲市| 洛浦县| 新河县| 津南区| 宁夏| 桂平市| 东安县| 扎兰屯市| 吐鲁番市| 当雄县| 宜丰县| 华亭县| 大姚县| 阜宁县| 中方县| 西乌| 新巴尔虎右旗| 丰台区| 辽宁省| 江西省| 老河口市| 新宁县| 红原县|