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

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

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

    俊星的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 俊星 閱讀(168) 評論(0)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 在线观看片免费人成视频播放| 亚洲中文字幕乱码一区| 男人扒开添女人下部免费视频| 精品国产免费观看久久久| 亚洲日韩精品A∨片无码加勒比| 国产成人yy免费视频| 亚洲国产av一区二区三区丶| 在线观看H网址免费入口| 亚洲人成网站在线播放2019| 免费观看美女裸体网站| 小说区亚洲自拍另类| 亚洲天堂在线视频| 你懂的免费在线观看| 亚洲一卡2卡三卡4卡有限公司| 99久久精品免费视频| 狠狠色香婷婷久久亚洲精品| 成全视频在线观看免费高清动漫视频下载| 亚洲三级在线观看| 国产成人免费手机在线观看视频 | 国产成人高清亚洲一区久久 | 99久久国产热无码精品免费 | 国产免费牲交视频免费播放| 亚洲色成人网站WWW永久| 无码国产精品一区二区免费16| 亚洲精品在线免费观看视频| 好男人视频社区精品免费| 国产亚洲精彩视频| 亚洲va中文字幕无码久久| a毛片基地免费全部视频| 色多多免费视频观看区一区| 久久久青草青青亚洲国产免观| 蜜臀AV免费一区二区三区| 亚洲国产精品成人综合色在线| 一本色道久久综合亚洲精品高清| 99在线热视频只有精品免费| 亚洲国产AV无码一区二区三区| 亚洲人成人无码网www电影首页| 一区二区无码免费视频网站| j8又粗又长又硬又爽免费视频| 亚洲福利一区二区| 亚洲成a人片在线观看日本麻豆|