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

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

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

    紫蘭州

    紫蘭州

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      4 隨筆 :: 0 文章 :: 1 評(píng)論 :: 0 Trackbacks

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

     

    在上一節(jié)介紹了javaDOM的方式解析XML,本文用的到test.xml,請(qǐng)參考上節(jié)

     

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

    1.Java解析xmlDOM

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

    SAX不用將整個(gè)文檔加載到內(nèi)存,基于事件驅(qū)動(dòng)的API(Observer模式),用戶只需要注冊(cè)自己感興趣的事件即可。SAX提供EntityResolver, DTDHandler, ContentHandler, ErrorHandler接口,分別用于監(jiān)聽(tīng)解析實(shí)體事件、DTD處理事件、正文處理事件和處理出錯(cuò)事件,與AWT類似,SAX還提供了一個(gè)對(duì)這4個(gè)接口默認(rèn)的類DefaultHandler(這里的默認(rèn)實(shí)現(xiàn),其實(shí)就是一個(gè)空方法),一般只要繼承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對(duì)于寫操作無(wú)能為力");    
     45    }
        
     46        
     47}
        
     48   
     49// 重寫對(duì)自己感興趣的事件處理方法    
     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("開(kāi)始解析文檔");    
     78    }
        
     79   
     80    @Override   
     81    public void endDocument() throws SAXException {    
     82        System.err.println("解析結(jié)束");    
     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) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产无遮挡又黄又爽免费网站| 黄页网址在线免费观看| 亚洲日本天堂在线| 午夜亚洲乱码伦小说区69堂| 日本永久免费a∨在线视频 | 久久精品国产亚洲av麻豆色欲 | 国产亚洲成av片在线观看| 久久亚洲精品AB无码播放 | 99久久精品国产亚洲| 亚洲国产日韩视频观看| 免费无码专区毛片高潮喷水| a级男女仿爱免费视频| 久草视频免费在线| 亚洲av无码成人精品区在线播放| 亚洲AV午夜成人影院老师机影院| 亚洲国产精品无码久久久| 国产精品无码亚洲一区二区三区| 国产中文字幕在线免费观看 | 97国产免费全部免费观看| 国产精品色午夜视频免费看| 亚洲愉拍99热成人精品热久久 | 亚洲卡一卡2卡三卡4麻豆| 国产亚洲精品欧洲在线观看| 永久免费AV无码网站国产| 免费观看理论片毛片| 国产亚洲免费的视频看| 国产亚洲国产bv网站在线| 国产精品成人啪精品视频免费| 国产成人精品免费视频大全麻豆| 亚洲av区一区二区三| 久久久久亚洲AV无码观看| 国产天堂亚洲精品| 最近免费中文字幕大全免费版视频| 国产精品免费看久久久久| 亚洲成a人片77777老司机| 亚洲AV电影天堂男人的天堂| 国产精品免费观看调教网| 国产免费午夜a无码v视频| 亚洲高清中文字幕综合网| 男人和女人高潮免费网站| 日本三级2019在线观看免费|