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

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

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

    紫蘭州

    紫蘭州

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

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

     

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

     

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

    1.Java解析xmlDOM

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

    SAX不用將整個文檔加載到內(nèi)存,基于事件驅(qū)動的API(Observer模式),用戶只需要注冊自己感興趣的事件即可。SAX提供EntityResolver, DTDHandler, ContentHandler, ErrorHandler接口,分別用于監(jiān)聽解析實體事件、DTD處理事件、正文處理事件和處理出錯事件,與AWT類似,SAX還提供了一個對這4個接口默認(rèn)的類DefaultHandler(這里的默認(rèn)實現(xiàn),其實就是一個空方法),一般只要繼承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("解析結(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 紫蘭州 閱讀(292) 評論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲女久久久噜噜噜熟女| 91嫩草免费国产永久入口| 在线a亚洲v天堂网2018| 亚洲夂夂婷婷色拍WW47| 麻豆最新国产剧情AV原创免费| 亚洲日韩中文字幕| 波多野结衣免费在线观看| 亚洲伦理中文字幕| 成年人免费观看视频网站| 亚洲另类无码一区二区三区| 国产黄色片在线免费观看| 蜜芽亚洲av无码一区二区三区| 免费一级e一片在线播放| 一级特黄a免费大片| 亚洲春色在线视频| h视频在线观看免费完整版| 亚洲成_人网站图片| 四虎成人精品在永久免费| 黄色视屏在线免费播放| 久久精品视频亚洲| 无限动漫网在线观看免费| 小说区亚洲自拍另类| 亚洲精品无码专区久久久| 成全视频免费观看在线看| 亚洲精品无码久久久久久久| 四虎成人免费网址在线| 一级一级一级毛片免费毛片| 久久久久亚洲av无码专区喷水| www.黄色免费网站| 污污污视频在线免费观看| 亚洲国产综合专区电影在线| 成人在线免费观看| 中文字幕无线码中文字幕免费| 亚洲成无码人在线观看| 全部免费毛片在线| 久久免费福利视频| 亚洲av成人一区二区三区观看在线| 亚洲精品tv久久久久| 免费H网站在线观看的| 一个人看www免费高清字幕| 亚洲国产精品成人精品小说|