第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

jaxp解析器——sax

標(biāo)簽:
JQuery

   上篇对采用jaxp解析器使用dom技术解析xml做了一个介绍,对jaxp解析器使用sax技术解析xml则一笔带过了,接下来我们看看jaxp采用sax技术是如何解析xml的呢。

   采用sax技术解析xml是依靠于事件驱动的,边读边解析,相关类位于javax.xml.parsers包里面

           **SAXParser    此类的实例可以从SAXParserFactory的newSAXParser( )方法获得

                     |_ Parser( File f , DefaultHandler dh )   两个参数   *第一个参数:xml的路径    *第二个参数:事件处理器

           **SAXParserFactory     其实例可以通过本身的newInstance()方法得到

   **SAX执行过程

            |- 当解析到开始标签的时,自动执行startElement()方法

            |- 当解析到文本的时,自动执行characters()方法

            |_ 当解析到结束标签时,自动执行endElement()方法


   **使用jaxp的sax方式来解析xml

            *sax方式不能实现增删改操作,只能做查询操作

            *打印整个xml文档

                   执行parse()方法,第一个参数是xml路径,第二个参数是事件处理器

                           **创建一个类,继承事件处理器的类

                           **重写里面的三个方法

public class TestSax {    public static void main(String[] args) throws Exception {        /*         * 1、创建解析器工厂         * 2、根据工厂得到解析器         * 3、调用解析器的parse方法         * 4、创建继承事件处理器的类         */        //1、创建解析器工厂        SAXParserFactory saxParserFactory=SAXParserFactory.newInstance();        //2、根据工厂得到解析器        SAXParser saxParser=saxParserFactory.newSAXParser();        //3、调用解析器的parse方法        saxParser.parse("src/persion.xml", new MyHandler());    }}class MyHandler extends DefaultHandler{    @Override    public void startElement(String uri, String localName, String qName,            Attributes attributes) throws SAXException {        System.out.print("<"+qName+">");    }    @Override    public void characters(char[] ch, int start, int length)            throws SAXException {        System.out.print(new String(ch,start,length));    }    @Override    public void endElement(String uri, String localName, String qName)            throws SAXException {        System.out.print("</"+qName+">");    }    }

            *获取到所有name的值

                           **定义一个成员变量flag=false

                           **判断开始方法是否是name元素,如果是name元素,把flag设置为true

                           **如果flag值为true,在character()方法里面打印内容

                           **当执行到结束方法时,把flag值设置成false

public class TestSax {    public static void main(String[] args) throws Exception {        /*         * 1、创建解析器工厂         * 2、根据工厂得到解析器         * 3、调用解析器的parse方法         * 4、创建继承事件处理器的类         */        //1、创建解析器工厂        SAXParserFactory saxParserFactory=SAXParserFactory.newInstance();        //2、根据工厂得到解析器        SAXParser saxParser=saxParserFactory.newSAXParser();        //3、调用解析器的parse方法        saxParser.parse("src/persion.xml", new MyHandler1());    }}class MyHandler1 extends DefaultHandler{    boolean flag=false;    @Override    public void startElement(String uri, String localName, String qName,            Attributes attributes) throws SAXException {        if("name".equals(qName)){            flag=true;        }    }    @Override    public void characters(char[] ch, int start, int length)            throws SAXException {        if(flag==true){            System.out.println(new String(ch,start,length));        }    }    @Override    public void endElement(String uri, String localName, String qName)            throws SAXException {        if("name".equals(qName)){            flag=false;        }    }}

            *获取到第一个name的值

public class TestSax {    public static void main(String[] args) throws Exception {        /*         * 1、创建解析器工厂         * 2、根据工厂得到解析器         * 3、调用解析器的parse方法         * 4、创建继承事件处理器的类         */        //1、创建解析器工厂        SAXParserFactory saxParserFactory=SAXParserFactory.newInstance();        //2、根据工厂得到解析器        SAXParser saxParser=saxParserFactory.newSAXParser();        //3、调用解析器的parse方法        saxParser.parse("src/persion.xml", new MyHandler1());    }}class MyHandler1 extends DefaultHandler{    boolean flag=false;    int idx=1;    @Override    public void startElement(String uri, String localName, String qName,            Attributes attributes) throws SAXException {        if("name".equals(qName)&&idx==1){            flag=true;        }    }    @Override    public void characters(char[] ch, int start, int length)            throws SAXException {        if(flag==true){            System.out.println(new String(ch,start,length));        }    }    @Override    public void endElement(String uri, String localName, String qName)            throws SAXException {        if("name".equals(qName)){            flag=false;            idx++;        }    }}


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消