<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    紫蘭州

    紫蘭州

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      4 隨筆 :: 0 文章 :: 1 評論 :: 0 Trackbacks

    Java解析xml之SAX,Java,解析,xml,SAX

     

    在上一節介紹了javaDOM的方式解析XML,本文用的到test.xml,請參考上節

     

    -------------------------------------------

    1.Java解析xmlDOM

    --------------------------------------------------------------------------

    SAX不用將整個文檔加載到內存,基于事件驅動的API(Observer模式),用戶只需要注冊自己感興趣的事件即可。SAX提供EntityResolver, DTDHandler, ContentHandler, ErrorHandler接口,分別用于監聽解析實體事件、DTD處理事件、正文處理事件和處理出錯事件,與AWT類似,SAX還提供了一個對這4個接口默認的類DefaultHandler(這里的默認實現,其實就是一個空方法),一般只要繼承DefaultHandler,重寫自己感興趣的事件即可。

      1package test.xml;    
      2   
      3import java.io.IOException;    
      4import java.io.InputStream;    
      5   
      6import javax.xml.parsers.ParserConfigurationException;    
      7import javax.xml.parsers.SAXParser;    
      8import javax.xml.parsers.SAXParserFactory;    
      9   
     10import org.xml.sax.Attributes;    
     11import org.xml.sax.InputSource;    
     12import org.xml.sax.Locator;    
     13import org.xml.sax.SAXException;    
     14import org.xml.sax.SAXParseException;    
     15import org.xml.sax.helpers.DefaultHandler;    
     16   
     17/**   
     18 *   
     19 * @author whwang   
     20 */
       
     21public class TestSAX {    
     22   
     23    public static void main(String[] args) {    
     24        read();    
     25        write();    
     26    }
        
     27        
     28    public static void read() {    
     29        try {    
     30            SAXParserFactory factory = SAXParserFactory.newInstance();    
     31            SAXParser parser = factory.newSAXParser();    
     32            InputStream in = TestSAX.class.getClassLoader().getResourceAsStream("test.xml");    
     33            parser.parse(in, new MyHandler());    
     34        }
     catch (ParserConfigurationException e) {    
     35            e.printStackTrace();    
     36        }
     catch (SAXException e) {    
     37            e.printStackTrace();    
     38        }
     catch (IOException e) {    
     39            e.printStackTrace();    
     40        }
        
     41    }
        
     42        
     43    public static void write() {    
     44        System.err.println("純SAX對于寫操作無能為力");    
     45    }
        
     46        
     47}
        
     48   
     49// 重寫對自己感興趣的事件處理方法    
     50class MyHandler extends DefaultHandler {    
     51   
     52    @Override   
     53    public InputSource resolveEntity(String publicId, String systemId)    
     54            throws IOException, SAXException {    
     55        return super.resolveEntity(publicId, systemId);    
     56    }
        
     57   
     58    @Override   
     59    public void notationDecl(String name, String publicId, String systemId)    
     60            throws SAXException {    
     61        super.notationDecl(name, publicId, systemId);    
     62    }
        
     63   
     64    @Override   
     65    public void unparsedEntityDecl(String name, String publicId,    
     66            String systemId, String notationName) throws SAXException {    
     67        super.unparsedEntityDecl(name, publicId, systemId, notationName);    
     68    }
        
     69   
     70    @Override   
     71    public void setDocumentLocator(Locator locator) {    
     72        super.setDocumentLocator(locator);    
     73    }
        
     74   
     75    @Override   
     76    public void startDocument() throws SAXException {    
     77        System.err.println("開始解析文檔");    
     78    }
        
     79   
     80    @Override   
     81    public void endDocument() throws SAXException {    
     82        System.err.println("解析結束");    
     83    }
        
     84   
     85    @Override   
     86    public void startPrefixMapping(String prefix, String uri)    
     87            throws SAXException {    
     88        super.startPrefixMapping(prefix, uri);    
     89    }
        
     90   
     91    @Override   
     92    public void endPrefixMapping(String prefix) throws SAXException {    
     93        super.endPrefixMapping(prefix);    
     94    }
        
     95   
     96    @Override   
     97    public void startElement(String uri, String localName, String qName,    
     98            Attributes attributes) throws SAXException {    
     99        System.err.print("Element: " + qName + ", attr: ");    
    100        print(attributes);    
    101    }
        
    102   
    103    @Override   
    104    public void endElement(String uri, String localName, String qName)    
    105            throws SAXException {    
    106        super.endElement(uri, localName, qName);    
    107    }
        
    108   
    109    @Override   
    110    public void characters(char[] ch, int start, int length)    
    111            throws SAXException {    
    112        super.characters(ch, start, length);    
    113    }
        
    114   
    115    @Override   
    116    public void ignorableWhitespace(char[] ch, int start, int length)    
    117            throws SAXException {    
    118        super.ignorableWhitespace(ch, start, length);    
    119    }
        
    120   
    121    @Override   
    122    public void processingInstruction(String target, String data)    
    123            throws SAXException {    
    124        super.processingInstruction(target, data);    
    125    }
        
    126   
    127    @Override   
    128    public void skippedEntity(String name) throws SAXException {    
    129        super.skippedEntity(name);    
    130    }
        
    131   
    132    @Override   
    133    public void warning(SAXParseException e) throws SAXException {    
    134        super.warning(e);    
    135    }
        
    136   
    137    @Override   
    138    public void error(SAXParseException e) throws SAXException {    
    139        super.error(e);    
    140    }
        
    141   
    142    @Override   
    143    public void fatalError(SAXParseException e) throws SAXException {    
    144        super.fatalError(e);    
    145    }
        
    146        
    147    private void print(Attributes attrs) {    
    148        if (attrs == nullreturn;    
    149        System.err.print("[");    
    150        for (int i = 0; i < attrs.getLength(); i++{    
    151            System.err.print(attrs.getQName(i) + " = " + attrs.getValue(i));    
    152            if (i != attrs.getLength() - 1{    
    153                System.err.print("");    
    154            }
        
    155        }
        
    156        System.err.println("]");    
    157    }
        
    158}
       
    159


    posted on 2012-08-21 11:14 紫蘭州 閱讀(286) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产韩国一区二区| 亚洲乱码国产乱码精品精| 亚洲神级电影国语版| 午夜不卡久久精品无码免费| 国产成人毛片亚洲精品| 一级毛片免费不卡| 亚洲国产精品人人做人人爱| 一本久久免费视频| 色久悠悠婷婷综合在线亚洲| 99视频免费在线观看| 亚洲国产成人精品无码区在线观看| 免费毛片a线观看| 亚洲AV美女一区二区三区| 久久免费看黄a级毛片| 伊人久久综在合线亚洲2019| 波多野结衣中文字幕免费视频| 亚洲另类无码专区丝袜| 无码少妇一区二区浪潮免费| 亚洲综合无码无在线观看| 浮力影院第一页小视频国产在线观看免费 | 免费一区二区三区四区五区| 国产亚洲精品精品精品| 国产亚洲成人久久| 一级毛片在线观看免费| 久久亚洲精品专区蓝色区| 国产小视频在线观看免费| 一级毛片免费全部播放| 亚洲一区精品中文字幕| 成年人视频在线观看免费| 未满十八私人高清免费影院| 亚洲va无码va在线va天堂| 成年人免费的视频| 免费无码午夜福利片 | 亚洲一区二区三区四区在线观看| 日本免费网址大全在线观看| 国产亚洲精品91| 亚洲av中文无码乱人伦在线播放| 免费A级毛片无码免费视| 九九久久国产精品免费热6| 久久精品蜜芽亚洲国产AV| 日本高清免费网站|