sax解釋xml

xml文件內容

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

<book>

<name>三國演義</name>

<author>羅貫中</author>

<price>50rmb</price>

</book>

<book>

<name>水滸傳</name>

<author>施耐庵</author>

<price>60rmb</price>

</book>

<book>

<name>紅樓夢</name>

<author>曹雪芹</author>

<price>70rmb</price>

</book>

<book>

<name>西遊記</name>

<author>吳承恩</author>

<price>80rmb</price>

</book>

</books>




//解析代碼

package domdemo;

import java.util.ArrayList;

import java.util.List;


import javax.xml.namespace.QName;

import javax.xml.parsers.SAXParser;

import javax.xml.parsers.SAXParserFactory;


import org.xml.sax.Attributes;

import org.xml.sax.SAXException;

import org.xml.sax.XMLReader;

import org.xml.sax.helpers.DefaultHandler;


public class saxXMLparse {


public static void main(String[] args) throws Exception{

//第一種方法

SAXParser sax= SAXParserFactory.newInstance().newSAXParser();

sax.parse("src/demo1.xml",new DefaultHandler(){

           Book book=null;

           String node=null;

           List<Book> books=new ArrayList<Book>();

@Override

public void startDocument() throws SAXException {

System.out.println("開始解析xml");

}

@Override

public void endDocument() throws SAXException {

// TODO Auto-generated method stub

System.out.println("xml解析結束,遍歷books");

for(Book b:books){

System.out.println("書名"+b.getBookName());

System.out.println("作者"+b.getAuthor());

System.out.println("價格"+b.getPrice());

}

}

@Override

public void startElement(String uri, String localName, String qName, Attributes attributes)

throws SAXException {

if("book".equals("book")){

book=new Book();

}

node=qName;

System.out.println(node);

}

@Override

public void characters(char[] ch, int start, int length) throws SAXException {

System.out.println(new String(ch,start,length));

if("name".equals(node))

book.setBookName(new String(ch,start,length));

if("author".equals(node)){

System.out.println(node);

book.setAuthor(new String(ch,start,length));}

if("price".equals(node))

book.setPrice(Double.parseDouble(new String(ch,start,2)));

}

@Override

public void endElement(String uri, String localName, String qName) throws SAXException {

// TODO Auto-generated method stub

if("book".equals(qName)){

books.add(book);

book=null;

}

node=null;

}


});

//第二種方法

       List<Book> books=new ArrayList<Book>();

SAXParser sax1= SAXParserFactory.newInstance().newSAXParser();

XMLReader reader=sax1.getXMLReader();

reader.setContentHandler(new DefaultHandler(){

          Book book=null;

          String node=null;

         

@Override

public void startDocument() throws SAXException {

System.out.println("開始解析xml");

}

@Override

public void endDocument() throws SAXException {

// TODO Auto-generated method stub

System.out.println("xml解析結束,遍歷books");

}

@Override

public void startElement(String uri, String localName, String qName, Attributes attributes)

throws SAXException {

if("book".equals("book")){

book=new Book();

}

node=qName;

System.out.println(node);

}

@Override

public void characters(char[] ch, int start, int length) throws SAXException {

System.out.println(new String(ch,start,length));

if("name".equals(node))

book.setBookName(new String(ch,start,length));

if("author".equals(node)){

System.out.println(node);

book.setAuthor(new String(ch,start,length));}

if("price".equals(node))

book.setPrice(Double.parseDouble(new String(ch,start,2)));

}

@Override

public void endElement(String uri, String localName, String qName) throws SAXException {

// TODO Auto-generated method stub

if("book".equals(qName)){

books.add(book);

book=null;

}

node=null;

}


});

reader.parse("src/demo1.xml");//加載xml文件

for(Book b:books){//遍歷

System.out.println("書名"+b.getBookName());

System.out.println("作者"+b.getAuthor());

System.out.println("價格"+b.getPrice());

}


}

}

//創建book類

class Book{

private String bookName;

private String author;

private double price;

public String getBookName() {

return bookName;

}

public void setBookName(String bookName) {

this.bookName = bookName;

}

public String getAuthor() {

return author;

}

public void setAuthor(String author) {

this.author = author;

}

public double getPrice() {

return price;

}

public void setPrice(double price) {

this.price = price;

}

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章