俊星的BLOG

          JAVA SAX之簡單實用

          SAX是Simple API for XML的縮寫(官網:saxproject),一個用來解決大型XML文檔讀取的接口,下面是我的簡單試用:
          import java.io.FileInputStream;

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

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

          /**
           * 需要繼承自DefaultHandler
           * 
          @author kinkding
           
          */

          public class Test extends DefaultHandler {
              
          protected StringBuffer bodyText = new StringBuffer();
              
          private int level = 0;
              
              
          /** 開始解析元素 */
              
          public void startElement(String namespaceURI, String localName, String fullName, Attributes attributes)
                      
          throws SAXException {
                  System.out.print(getPrefix() 
          + "<" + fullName + "(");
                  
          for (int i = 0; i < attributes.getLength(); i++{
                      String temp 
          = attributes.getQName(i);
                      String value 
          = attributes.getValue(i);
                      System.out.print(temp 
          + ":" + value + " ");
                  }

                  System.out.println(
          ")>");
                  level
          ++;
              }

              
              
          /** 元素間內容的處理 */
              
          public void characters(char buffer[], int start, int length) throws SAXException {
                  bodyText.append(buffer, start, length);
              }

              
              
          /** 結束元素的解析 */
              
          public void endElement(String namespaceURI, String localName, String fullName) throws SAXException {
                  System.out.println(getPrefix() 
          + bodyText.toString().trim());
                  bodyText 
          = new StringBuffer();
                  level
          --;
                  System.out.println(getPrefix() 
          + "<" + fullName + ">");
              }


              
          private String getPrefix() {
                  String s 
          = "";
                  
          for (int i = 0; i < level; i++{
                      s 
          += " ";
                  }

                  
          return s;
              }


              
          public XMLReader getReader() throws Exception {
                  SAXParser parser 
          = SAXParserFactory.newInstance().newSAXParser();
                  XMLReader reader 
          = parser.getXMLReader();
                  reader.setDTDHandler(
          this);
                  reader.setContentHandler(
          this);
                  reader.setEntityResolver(
          this);
                  reader.setErrorHandler(
          this);
                  
          return reader;
              }


              
          public static void main(String[] args) throws Exception {
                  Test t 
          = new Test();
                  XMLReader reader 
          = t.getReader();
                  reader.parse(
          new InputSource(new FileInputStream("test.xml")));
              }

          }

          test.xml文件內容如下:
          <?xml version='1.0'?>
          <table name="job" code="1234">
              
          <tr>我的家</tr>
              
          <td colspan="2">生命就像一條大河</td>
              
          <td colspan="3">goodjob</td>
          </table>

          輸出如下:
          <table(name:job code:1234 )>
           <tr()>
            我的家
           <tr>
           <td(colspan:
          2 )>
            生命就像一條大河
           <td>
           <td(colspan:
          3 )>
            goodjob
           <td>
           
          <table>

          posted on 2009-04-30 20:29 俊星 閱讀(169) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 焉耆| 芷江| 且末县| 巴中市| 郎溪县| 锦屏县| 长乐市| 新昌县| 南郑县| 临颍县| 咸丰县| 射洪县| 金沙县| 双峰县| 南乐县| 建瓯市| 沙河市| 历史| 临沂市| 阜城县| 綦江县| 乐安县| 邢台县| 惠州市| 娄烦县| 慈利县| 泾阳县| 上林县| 南投市| 随州市| 阿拉尔市| 麻城市| 安龙县| 两当县| 西乌珠穆沁旗| 连山| 东乡族自治县| 陈巴尔虎旗| 荣昌县| 昌邑市| 南江县|