最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java解析xml之sax解析xml示例分享

 更新時(shí)間:2014年01月05日 09:50:27   作者:  
SAX基于事件的解析,解析器在一次讀取XML文件中根據(jù)讀取的數(shù)據(jù)產(chǎn)生相應(yīng)的事件,由應(yīng)用程序?qū)崿F(xiàn)相應(yīng)的事件處理邏輯,即它是一種“推”的解析方式;這種解析方法速度快、占用內(nèi)存少,但是它需要應(yīng)用程序自己處理解析器的狀態(tài),實(shí)現(xiàn)起來會(huì)比較麻煩

復(fù)制代碼 代碼如下:

package com.test;

import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class SaxXML {

    public static void main(String[] args) {
        File file = new File("e:/People.xml");
        try {
            SAXParserFactory spf = SAXParserFactory.newInstance();
            SAXParser parser = spf.newSAXParser();
            SaxHandler handler = new SaxHandler("People");
            parser.parse(new FileInputStream(file), handler);

            List<People> peopleList = handler.getPeoples();
            for(People people : peopleList){
                System.out.println(people.getId()+"\t"+people.getName()+"\t"+people.getEnglishName()+"\t"+people.getAge());
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

class SaxHandler extends DefaultHandler {
    private List<People> peoples = null;
    private People people;
    private String currentTag = null;
    private String currentValue = null;
    private String nodeName = null;

    public List<People> getPeoples() {
        return peoples;
    }

    public SaxHandler(String nodeName) {
        this.nodeName = nodeName;
    }

    @Override
    public void startDocument() throws SAXException {
        // TODO 當(dāng)讀到一個(gè)開始標(biāo)簽的時(shí)候,會(huì)觸發(fā)這個(gè)方法
        super.startDocument();

        peoples = new ArrayList<People>();
    }

    @Override
    public void endDocument() throws SAXException {
        // TODO 自動(dòng)生成的方法存根
        super.endDocument();
    }

    @Override
    public void startElement(String uri, String localName, String name,
            Attributes attributes) throws SAXException {
        // TODO 當(dāng)遇到文檔的開頭的時(shí)候,調(diào)用這個(gè)方法
        super.startElement(uri, localName, name, attributes);

        if (name.equals(nodeName)) {
            people = new People();
        }
        if (attributes != null && people != null) {
            for (int i = 0; i < attributes.getLength(); i++) {
                if(attributes.getQName(i).equals("id")){
                    people.setId(attributes.getValue(i));
                }
                else if(attributes.getQName(i).equals("en")){
                    people.setEnglishName(attributes.getValue(i));
                }
            }
        }
        currentTag = name;
    }

    @Override
    public void characters(char[] ch, int start, int length)
            throws SAXException {
        // TODO 這個(gè)方法用來處理在XML文件中讀到的內(nèi)容
        super.characters(ch, start, length);

        if (currentTag != null && people != null) {
            currentValue = new String(ch, start, length);
            if (currentValue != null && !currentValue.trim().equals("") && !currentValue.trim().equals("\n")) {
                if(currentTag.equals("Name")){
                    people.setName(currentValue);
                }
                else if(currentTag.equals("Age")){
                    people.setAge(currentValue);
                }
            }
        }
        currentTag = null;
        currentValue = null;
    }

    @Override
    public void endElement(String uri, String localName, String name)
            throws SAXException {
        // TODO 在遇到結(jié)束標(biāo)簽的時(shí)候,調(diào)用這個(gè)方法
        super.endElement(uri, localName, name);

        if (name.equals(nodeName)) {
            peoples.add(people);
        }
    }

}

相關(guān)文章

  • 淺談Java實(shí)現(xiàn)回溯算法之八皇后問題

    淺談Java實(shí)現(xiàn)回溯算法之八皇后問題

    八皇后問題是一個(gè)古老而又著名的問題,是學(xué)習(xí)回溯算法的一個(gè)經(jīng)典案例。今天我們就一起來探究一下吧
    2021-06-06
  • Java web項(xiàng)目中的強(qiáng)制登錄功能實(shí)現(xiàn)代碼

    Java web項(xiàng)目中的強(qiáng)制登錄功能實(shí)現(xiàn)代碼

    本文給大家分享Java web項(xiàng)目中的強(qiáng)制登錄功能實(shí)現(xiàn)代碼,為了避免直接進(jìn)入項(xiàng)目中存在的頁面,使用filter過濾器,代碼簡單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-11-11
  • SpringBoot整合阿里?Druid?數(shù)據(jù)源的實(shí)例詳解

    SpringBoot整合阿里?Druid?數(shù)據(jù)源的實(shí)例詳解

    這篇文章主要介紹了SpringBoot整合阿里?Druid?數(shù)據(jù)源,主要講解了手動(dòng)配置方法,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-11-11
  • Java修改maven的默認(rèn)jdk版本為1.7的方法

    Java修改maven的默認(rèn)jdk版本為1.7的方法

    這篇文章主要介紹了Java修改maven的默認(rèn)jdk版本為1.7的方法,需要的朋友可以參考下
    2018-02-02
  • Java使用PDFBox渲染生成pdf文檔的代碼詳解

    Java使用PDFBox渲染生成pdf文檔的代碼詳解

    使用PDFBox可以渲染生成pdf文檔,并且自定義程度高,只是比較麻煩,這篇文章將為大家詳細(xì)介紹一下具體的實(shí)現(xiàn)方法,感興趣的小伙伴可以參考一下
    2025-04-04
  • Java日期時(shí)間字符串和毫秒相互轉(zhuǎn)換的方法

    Java日期時(shí)間字符串和毫秒相互轉(zhuǎn)換的方法

    這篇文章主要為大家詳細(xì)介紹了Java日期時(shí)間字符串和毫秒相互轉(zhuǎn)換的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Java的Jackson庫的使用及其樹模型的入門學(xué)習(xí)教程

    Java的Jackson庫的使用及其樹模型的入門學(xué)習(xí)教程

    這篇文章主要介紹了Java的Jackson庫的使用及其樹模型入門學(xué)習(xí)教程,Jackson庫通常被用來作Java對(duì)象和JSON的互相轉(zhuǎn)換,需要的朋友可以參考下
    2016-01-01
  • 詳解Java如何優(yōu)雅的處理異常

    詳解Java如何優(yōu)雅的處理異常

    在編寫 Java 程序的過程中,有一種異常幾乎每個(gè)開發(fā)者都會(huì)遇到——空指針異常(NullPointerException),那么我們應(yīng)該如何有效且優(yōu)雅的處理空指針異常呢,下面小編就來詳細(xì)介紹這個(gè)處理方案吧
    2023-08-08
  • Java數(shù)據(jù)結(jié)構(gòu)篇之實(shí)現(xiàn)二叉搜索樹的核心方法

    Java數(shù)據(jù)結(jié)構(gòu)篇之實(shí)現(xiàn)二叉搜索樹的核心方法

    二叉搜索樹是一種常用的數(shù)據(jù)結(jié)構(gòu),它是一棵二叉樹,且每個(gè)節(jié)點(diǎn)的值都大于其左子樹中任何節(jié)點(diǎn)的值,而小于其右子樹中任何節(jié)點(diǎn)的值,這篇文章主要給大家介紹了關(guān)于Java數(shù)據(jù)結(jié)構(gòu)篇之實(shí)現(xiàn)二叉搜索樹的核心方法,需要的朋友可以參考下
    2023-12-12
  • WebService教程詳解(一)

    WebService教程詳解(一)

    WebService,顧名思義就是基于Web的服務(wù)。它使用Web(HTTP)方式,接收和響應(yīng)外部系統(tǒng)的某種請(qǐng)求,接下來通過本文給大家介紹WebService教程詳解(一),對(duì)webservice教程感興趣的朋友一起學(xué)習(xí)吧
    2016-03-03

最新評(píng)論

涿州市| 广汉市| 历史| 盐源县| 绥芬河市| 永宁县| 富阳市| 遂川县| 新龙县| 蓬溪县| 砀山县| 桃园市| 桐庐县| 兴隆县| 呈贡县| 都匀市| 绵阳市| 台南市| 舟曲县| 万山特区| 大庆市| 广安市| 普陀区| 安康市| 周口市| 蒙阴县| 藁城市| 东阿县| 开平市| 延安市| 徐州市| 沙洋县| 高陵县| 浦县| 称多县| 郎溪县| 林口县| 泰顺县| 昌邑市| 中方县| 如东县|