您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關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)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。