Read Sean

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

          [XML學(xué)習(xí)筆記][3.1]通過JAXP使用SAX

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

          在前面的筆記中,我們曾經(jīng)提到讀取XML數(shù)據(jù)的兩種截然不同的方式,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文件時觸發(fā)的事件,如startDocument表示文檔開始,endElement表示元素讀取結(jié)束,characters表示在元素體內(nèi)讀到內(nèi)容等等。這里我為了方便直接寫成匿名內(nèi)部類了,Exception也沒有做任何處理,這在實際中通常是不合理的。

          基本上SAX的實現(xiàn)和使用都很直截了當(dāng),就是處理一個個事件罷了。
          主站蜘蛛池模板: 南澳县| 灵石县| 视频| 福建省| 张家港市| SHOW| 信丰县| 濉溪县| 宜都市| 宁强县| 精河县| 河南省| 永城市| 大足县| 永平县| 皮山县| 诸暨市| 灵丘县| 平乡县| 临漳县| 苗栗县| 建昌县| 阿城市| 会宁县| 东乡| 临桂县| 肥西县| 澎湖县| 冷水江市| 民县| 伊吾县| 平顶山市| 昔阳县| 湘潭市| 蓝田县| 南皮县| 天长市| 桂阳县| 石河子市| 阿巴嘎旗| 惠来县|