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

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

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

    使用SAX解析XML文檔

    步驟1.一個簡單的XML文檔:
    ???XML代碼:
    <?xml?version="1.0"?encoding="GBK"?>??
    <StudentInfo>??
    ????
    <student>??
    ????????
    <name>趙海波</name>??
    ????????
    <sex></sex>??
    ????????
    <lesson>??
    ????????????
    <lessonName>Spring整合開發(fā)</lessonName>??
    ????????????
    <lessonScore>85</lessonScore>??
    ????????
    </lesson>??
    ????????
    <lesson>??
    ????????????
    <lessonName>輕量級J2EE應(yīng)用開發(fā)</lessonName>??
    ????????????
    <lessonScore>95</lessonScore>??
    ????????
    </lesson>??
    ????????
    <lesson>??
    ????????????
    <lessonName>Ajax應(yīng)用開發(fā)</lessonName>??
    ????????????
    <lessonScore>80</lessonScore>??
    ????????
    </lesson>??
    ????
    </student>??
    ????
    <student>??
    ????????
    <name>程衛(wèi)娜</name>??
    ????????
    <sex></sex>??
    ????????
    <lesson>??
    ????????????
    <lessonName>Spring整合開發(fā)</lessonName>??
    ????????????
    <lessonScore>80</lessonScore>??
    ????????
    </lesson>??
    ????????
    <lesson>??
    ????????????
    <lessonName>輕量級J2EE應(yīng)用開發(fā)</lessonName>??
    ????????????
    <lessonScore>85</lessonScore>??
    ????????
    </lesson>??
    ????????
    <lesson>??
    ????????????
    <lessonName>Ajax應(yīng)用開發(fā)</lessonName>??
    ????????????
    <lessonScore>90</lessonScore>??
    ????????
    </lesson>??
    ????
    </student>??
    </StudentInfo>??

    步驟2.用于處理XML文檔的事件監(jiān)聽器:
    ???Java代碼:

    import?org.xml.sax.*;???
    public?class?XMLContentHandler?implements?ContentHandler???
    {??????
    ????
    //DTD中定義的元素名???
    ????private?static?final?String?ELEMENT_NAME?=?"name";???
    ????
    private?static?final?String?ELEMENT_SEX?=?"sex";???
    ????
    private?static?final?String?ELEMENT_LESSON?=?"lesson";???
    ????
    private?static?final?String?ELEMENT_LESSON_NAME?=?"lessonName";???
    ????
    private?static?final?String?ELEMENT_LESSON_SCORE?=?"lessonScore";???
    ????
    private?static?final?String?ELEMENT_STUDENT?=?"student";???
    ????
    private?static?final?String?ELEMENT_LINE?=?"breakLine";????
    ????
    //當(dāng)前元素的數(shù)據(jù)???
    ????private?String?currentData?=?"";???
    ????
    private?String?lessonName?=?"";???
    ????
    private?String?lessonScore?=?"";???
    ????
    //當(dāng)其他某一個調(diào)用事件發(fā)生時,先調(diào)用此方法來在文檔中定位。???
    ????public?void?setDocumentLocator(Locator?locator)???
    ????
    {???
    ????}
    ???
    ????
    //在解析整個文檔開始時調(diào)用???
    ????public?void?startDocument()?throws?SAXException???
    ????
    {???
    ????????System.out.println(
    "XML文件開始解析");???
    ????}
    ???
    ????
    //在解析整個文檔結(jié)束時調(diào)用???
    ????public?void?endDocument()?throws?SAXException???
    ????
    {???
    ????????System.out.println(
    "XML文件解析結(jié)束");???
    ????}
    ???
    ????
    //?在解析命名空間開始時調(diào)用???
    ????public?void?startPrefixMapping(String?prefix,?String?uri)?throws?SAXException???
    ????
    {???
    ????????System.out.println(
    "XML解析器開始解析命名空間");???
    ????}
    ???
    ????
    //在解析命名空間結(jié)束時調(diào)用???
    ????public?void?endPrefixMapping(String?prefix)?throws?SAXException???
    ????
    {???
    ????????System.out.println(
    "XML解析器解析命名空間結(jié)束");???
    ????}
    ???
    ????
    //在解析元素開始時調(diào)用???
    ????public?void?startElement(String?namespaceURI,?String?localName,String?qName,?Attributes?atts)?throws?SAXException???
    ????
    {???
    ????????System.out.println(
    "XML解析器開始解析元素"?+?localName);???
    ????}
    ???
    ????
    //在解析元素結(jié)束時調(diào)用???
    ????public?void?endElement(String?namespaceURI,?String?localName,?String?qName)?throws?SAXException???
    ????
    {???
    ????????
    if?(localName.equals(ELEMENT_NAME))???
    ????????
    {???
    ????????????System.out.println(localName?
    +?"????:????"?+?currentData);???
    ????????}
    ???
    ????????
    if?(localName.equals(ELEMENT_SEX))???
    ????????
    {???
    ????????????System.out.println(localName?
    +?"?????:?????"?+?currentData);???
    ????????}
    ???
    ????????
    if?(localName.equals(ELEMENT_LESSON_NAME))???
    ????????
    {???
    ????????????
    this.lessonName?=?currentData;???
    ????????}
    ???
    ????????
    if?(localName.equals(ELEMENT_LESSON_SCORE))???
    ????????
    {???
    ????????????
    this.lessonScore?=?currentData;???
    ????????}
    ???
    ????????
    if?(localName.equals(ELEMENT_LESSON))???
    ????????
    {???
    ????????????System.out.println(lessonName?
    +?"??????:?????"?+?lessonScore);???
    ????????}
    ???
    ????????System.out.println(
    "XML解析器解析元素"?+?localName?+?"結(jié)束");???
    ????}
    ???
    ????
    //?取得元素數(shù)據(jù)???
    ????public?void?characters(char[]?ch,?int?start,?int?length)?throws?SAXException???
    ????
    {???
    ????????currentData?
    =?new?String(ch,?start,?length).trim();???
    ????????System.out.println(
    "XML解析器成功解析到元素數(shù)據(jù)");???
    ????}
    ???
    ????
    //取得元素數(shù)據(jù)中的空白???
    ????public?void?ignorableWhitespace(char[]?ch,?int?start,?int?length)?throws?SAXException???
    ????
    {???
    ????}
    ???
    ????
    //在解析到處理指令時,調(diào)用此方法。???
    ????public?void?processingInstruction(String?target,?String?data)?throws?SAXException???
    ????
    {???
    ????}
    ???
    ????
    //當(dāng)未驗證解析器忽略實體時調(diào)用此方法???
    ????public?void?skippedEntity(String?name)?throws?SAXException???
    ????
    {???
    ????}
    ???
    }
    ??

    步驟3.通過主程序開始解析XML文檔,解析XML文檔的代碼如下:
    ???java代碼:
    import?java.io.*;???
    import?org.xml.sax.*;???
    import?org.xml.sax.helpers.*;???
    public?class?SAXParser???
    {???
    ????
    public?static?void?main(String[]?args)???
    ????
    {???
    ????????SAXParser?sax?
    =?new?SAXParser();???
    ????????sax.parseXMLFile(
    "student.xml");???
    ????}
    ???
    ????
    //?解析文檔???
    ????private?void?parseXMLFile(String?fileName)???
    ????
    {??????????
    ????????
    try??
    ????????
    {???
    ????????????
    //通過指定解析器的名稱來動態(tài)加載解析器???
    ????????????XMLReader?parser?=?XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");???
    ????????????
    //處理內(nèi)容前要注冊內(nèi)容管理器???
    ????????????parser.setContentHandler(new?XMLContentHandler());???
    ????????????
    //開始解析文檔???
    ????????????parser.parse(fileName);???
    ????????}
    ???
    ????????
    catch?(IOException?e)???
    ????????
    {???
    ????????????e.printStackTrace();???
    ????????}
    ???
    ????????
    catch?(SAXException?e)???
    ????????
    {???
    ????????????e.printStackTrace();???
    ????????}
    ???
    ????}
    ???
    }
    ??

    posted on 2008-09-28 11:09 nonels 閱讀(1769) 評論(5)  編輯  收藏 所屬分類: J2EE

    評論

    # re: 使用SAX解析XML文檔[未登錄] 2009-05-22 14:44 tiger

    您寫的很清楚,謝謝啊,中國需要這樣的人才,支持您,我也是研究xml應(yīng)用的研究生,不過自己剛開始學(xué)習(xí),看過您的文檔后收獲很多。我的郵箱是tjnuwanghu◎163.com 最近在做個導(dǎo)師給的任務(wù),要將一個xml文檔解析成類似注冊表那樣的列表,用的解析器是xerces-c++,自己在虛擬機(jī)linux上安裝了此解析器,但還是不會用它寫程序來簡單解析xml文檔,您有時間了給我看看,舉個例子,先謝謝您哦。

    徒弟  回復(fù)  更多評論   

    # re: 使用SAX解析XML文檔 2009-08-07 08:51 路過

    樓上的 如果你真的是研究生的話 那中國完了 我是一高中生 上面的例子也沒什么難的   回復(fù)  更多評論   

    # re: 使用SAX解析XML文檔 2009-08-12 14:42 心靈探索者

    聞道有先后,授業(yè)有專攻  回復(fù)  更多評論   

    # re: 使用SAX解析XML文檔 2009-08-17 22:24 Fucher

    高中生很適合干這個。  回復(fù)  更多評論   

    # re: 使用SAX解析XML文檔 2009-12-02 23:27 hello

    研究生? 雷死...  回復(fù)  更多評論   

    <2008年9月>
    31123456
    78910111213
    14151617181920
    21222324252627
    2829301234
    567891011

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(2)

    隨筆分類(16)

    隨筆檔案(16)

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产精品综合专区中文字幕免费播放| 在线亚洲人成电影网站色www| 最近最好的中文字幕2019免费 | 三级网站在线免费观看| 久久aa毛片免费播放嗯啊| 亚洲色欲一区二区三区在线观看| 国产va免费精品| 国产精品亚洲片在线观看不卡| 久久久久久国产a免费观看不卡 | 亚洲成a人片77777老司机| 亚洲AV无码片一区二区三区| 国产成人免费AV在线播放 | 精品亚洲成a人在线观看| 中文字幕无码日韩专区免费| 亚洲国产婷婷六月丁香| 无码国产精品一区二区免费3p | 牛牛在线精品观看免费正 | 国产男女猛烈无遮挡免费网站| 国产亚洲av人片在线观看| 皇色在线免费视频| 亚洲国产精品线在线观看| 亚洲视频在线观看免费视频| 亚洲色欲久久久久综合网| 中文字幕免费观看视频| 亚洲国产人成精品| 亚洲影院在线观看| 国产精品怡红院永久免费| 亚洲国产精品成人午夜在线观看 | 在线毛片片免费观看| 亚洲国产成人久久精品app| a级毛片免费观看视频| 久久亚洲精品中文字幕| 一二三四免费观看在线视频中文版| 亚洲国产精品久久久久久| 国产精品视频永久免费播放| 免费一区二区三区在线视频| 亚洲成a人片77777老司机| 在线观看亚洲免费| 久久亚洲精品11p| 久久99国产亚洲高清观看首页| aa级一级天堂片免费观看|