溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

XML文件使用SAX方法讀取的案例

發(fā)布時間:2020-10-30 12:23:04 來源:億速云 閱讀:131 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關XML文件使用SAX方法讀取的案例,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

 XML文件

<?xml version="1.0" encoding="UTF-8"?>	

	<bookstore>
		<book id="1">
			<name>冰與火之歌</name>
			<author>喬治馬丁</author>
			<year>2014</year>
			<price>89</price>
		</book>
		<book id="2">
			<name>安徒生童話</name>
			<year>2004</year>
			<price>77</price>		
			<language>English</language>
		</book>
	</bookstore>

handler.java類

package xmltes;

import javax.xml.stream.events.Characters;
import javax.xml.stream.events.StartElement;

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


public class handler extends DefaultHandler{
    private static int bookNum = 0;
    //遍歷xml文件的開始標簽
    @Override
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
        // 調(diào)用DefaultHandler父類的startElement方法
        super.startElement(uri, localName, qName, attributes);
        
        //判斷是不是有屬性的標簽/如book
        if(qName.equals("book")){
            bookNum++;
            System.out.println("====================開始遍歷第"+bookNum+"書的內(nèi)容================");
            //開始解析book元素
            //已知book元素下屬性的名稱,可以根據(jù)名稱判斷
           /* String value = attributes.getValue("id");
            System.out.println("book的屬性值是" + value);*/
            //如果不知道數(shù)的屬性名稱
            int num = attributes.getLength();
            
            for(int i=0;i<num;i++){
                System.out.println("書的第" + (i+1) + "個屬性名是:"+attributes.getQName(i)+"===屬性值是:" + attributes.getValue(i));
            }
            
        }else if(!qName.equals("book") && !qName.equals("bookstore") ){
            System.out.println("節(jié)點名是:" + qName);
        }
        
        
        
        
    }
    //遍歷xml文件的結束標簽
    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {
        // TODO Auto-generated method stub
        super.endElement(uri, localName, qName);
        //判斷這本書是否遍歷結束
        if(qName.equals("book")){
            System.out.println("====================結束遍歷第"+bookNum+"書的內(nèi)容================");
        }
    }
    
    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {
        // TODO Auto-generated method stub
        super.characters(ch, start, length);
        String value = new String(ch, start, length);
        if(!value.trim().equals("")){
            System.out.println(value);
        }
    }
    
    //用來標識解析開始
    @Override
    public void startDocument() throws SAXException {
        // TODO Auto-generated method stub
        super.startDocument();
//        System.out.println("進入標識解析開始方法");
    }
    
    //用來標識解析結束
    @Override
    public void endDocument() throws SAXException {
        // TODO Auto-generated method stub
        super.endDocument();
//        System.out.println("進入標識解析結束方法");
    }
    
}

Test類

package xmltes;

import java.io.IOException;

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

import org.xml.sax.SAXException;


public class SAXTest {
    public static void main(String[] args) {
        try {
            //獲取一個SAXParserFactory的實例
            SAXParserFactory factory = SAXParserFactory.newInstance();
            //通過factory獲取SAXParser實例
            SAXParser parser = factory.newSAXParser();
            //創(chuàng)建一個SAXParserHandler對象
            handler handler = new handler();
            parser.parse("001.xml", handler);
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

關于XML文件使用SAX方法讀取的案例就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI