国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

JAVA解析XML之SAX方式

2019-11-15 01:04:36
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
java解析xml之SAX方式JAVA解析XML之SAX方式SAX解析xml步驟

  通過(guò)SAXParseFactory的靜態(tài)newInstance()方法獲取SAXParserFactory實(shí)例factory  通過(guò)SAXParserFactory實(shí)例的newSAXParser()方法返回SAXParser實(shí)例parser  創(chuàng)建一個(gè)類(lèi)繼承DefaultHandle,重寫(xiě)方法進(jìn)行業(yè)務(wù)處理并創(chuàng)建這個(gè)類(lèi)的實(shí)例handle

重寫(xiě)DefaultHandle類(lèi)的方法

  startElement方法用來(lái)遍歷xml文件的開(kāi)始標(biāo)簽;

  endElement方法用來(lái)遍歷xml文件的結(jié)束標(biāo)簽;

  startDocument方法用來(lái)標(biāo)識(shí)解析開(kāi)始;

  endDocument方法用來(lái)標(biāo)識(shí)解析結(jié)束。

  characters方法用來(lái)獲取text

  其中:參數(shù)qName 遍歷到的元素的名稱(chēng)

     且同樣會(huì)出現(xiàn)空白和換行的問(wèn)題

下面直接上代碼
<?xml version="1.0" encoding="UTF-8"?><bookstore>    <book id="1">        <name>JAVA編程思想</name>        <anthor>****</anthor>        <year>2000</year>    </book>    <book id="2">        <name>瘋狂JAVA系列</name>        <anthor>李剛</anthor>        <PRice>89</price>    </book></bookstore>
books.xmlSAX.java
package pers.zww.xml.handler;import javax.xml.stream.events.StartElement;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;public class SAXParserHandler extends DefaultHandler{    int bookIndex=0;    /*     * 解析XML元素     */    @Override    public void startElement(String uri, String localName, String qName,            Attributes attributes) throws SAXException {        super.startElement(uri, localName, qName, attributes);        //開(kāi)始解析book元素的屬性                if (qName.equals("book")) {            bookIndex++;            System.out.println("開(kāi)始遍歷第"+bookIndex+"本書(shū)");            //            //已知book元素下的屬性名稱(chēng),根據(jù)屬性名稱(chēng)獲取屬性值//            String value=attributes.getValue("id");//            System.out.println("book的屬性值:"+value);            //未知book元素下的屬性名稱(chēng)及個(gè)數(shù)            int num=attributes.getLength();            for (int i = 0; i < num; i++) {                System.out.print("book元素的第"+(i+1)+"個(gè)屬性名:"+attributes.getQName(i));                System.out.println(" && 屬性值:"+attributes.getValue(i));                            }        }else if(!qName.equals("book")&&!qName.equals("bookstore")){            System.out.print("節(jié)點(diǎn)名:"+qName);                    }else {                    }    }    @Override    public void characters(char[] ch, int start, int length)            throws SAXException {        // TODO Auto-generated method stub        super.characters(ch, start, length);        String val=new String(ch, start, length);        if (!val.trim().equals("")) {            System.out.println(" && 節(jié)點(diǎn)值:"+val);        }    }        /*     * 用來(lái)遍歷xml文件的結(jié)束標(biāo)簽     */    @Override    public void endElement(String uri, String localName, String qName)            throws SAXException {        super.endElement(uri, localName, qName);        //是否針對(duì)一本書(shū)已經(jīng)遍歷結(jié)束        if (qName.equals("book")) {            System.out.println("=======================");        }    }        /*     * 用來(lái)標(biāo)志解析開(kāi)始     */    @Override    public void startDocument() throws SAXException {        // TODO Auto-generated method stub        super.startDocument();        //第一行開(kāi)始        System.out.println("SAX解析開(kāi)始");    }        /*     * 用來(lái)標(biāo)志解析結(jié)束     */    @Override    public void endDocument() throws SAXException {        // TODO Auto-generated method stub        super.endDocument();        //最后一行結(jié)束        System.out.println("SAX解析結(jié)束");    }}
SAXParserHandler.javaSAX與DOM對(duì)比

  DOM解析原理:先把XML文件整個(gè)加載到內(nèi)存中,在逐個(gè)解析;

  SAX解析原理:通過(guò)自己創(chuàng)建的Handler類(lèi),去逐個(gè)分析遇到的每一個(gè)節(jié)點(diǎn);(節(jié)點(diǎn)分析是從最外層向里層逐個(gè)開(kāi)始).

參考資料

  慕課網(wǎng)JessicaJiang老師視頻教程 鏈接:http://www.imooc.com/video/3789


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 临桂县| 拜泉县| 磴口县| 广安市| 云梦县| 桂林市| 闽清县| 河曲县| 德惠市| 离岛区| 徐闻县| 永新县| 清涧县| 星座| 天津市| 孝昌县| 荆州市| 宝兴县| 张掖市| 万宁市| 临邑县| 鲁甸县| 安丘市| 嘉善县| 开江县| 洪泽县| 仙居县| 图片| 历史| 萍乡市| 云梦县| 汉源县| 靖西县| 永清县| 胶南市| 禹州市| 滨海县| 临夏县| 阳新县| 兴化市| 防城港市|