首页 > 代码库 > sax解释xml

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;

}

}


sax解释xml