SAX解析XML例子

来源:互联网 发布:openresty java web 编辑:程序博客网 时间:2024/04/29 09:53

Demo类:

import java.util.Iterator;import java.util.List;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;public class SAXDemo {public static void main(String[] args) {SAXParserFactory factory = SAXParserFactory.newInstance();try {SAXParser parser = factory.newSAXParser();MyHandler handler = new MyHandler();parser.parse("D:/bookstore.xml", handler);List<Book> books = handler.getInfo();Iterator<Book> iterator = books.iterator();while (iterator.hasNext()) {System.out.println(iterator.next());}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

Handler类:

import java.util.ArrayList;import java.util.List;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;public class MyHandler extends DefaultHandler {private Book book;private List<Book> books = new ArrayList<Book>();private String tag;public List<Book> getInfo() {return books;}@Overridepublic void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {// TODO Auto-generated method stubtag = qName;if ("book".equals(qName)) {book = new Book();}if ("title".equals(qName)) {book.setLangguage(attributes.getValue("lang"));}}@Overridepublic void characters(char[] ch, int start, int length) throws SAXException {// TODO Auto-generated method stubString newString = new String(ch, start, length);if ("title".equals(tag)) {book.setTitle(newString);} else if ("author".equals(tag)) {book.setAuthor(newString);} else if ("year".equals(tag)) {book.setYear(Integer.parseInt(newString));} else if ("price".equals(tag)) {book.setPrice(Double.parseDouble(newString));}}@Overridepublic void endElement(String uri, String localName, String qName) throws SAXException {// TODO Auto-generated method stubtag = "";if ("book".equals(qName)) {books.add(book);}}}

基本类:

public class Book {private String title;private String author;private int year;private double price;private String langguage;public Book() {// TODO Auto-generated constructor stub}public String getLangguage() {return langguage;}public void setLangguage(String langguage) {this.langguage = langguage;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public int getYear() {return year;}public void setYear(int year) {this.year = year;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}@Overridepublic String toString() {return "title=" + title + ", author=" + author + ", year=" + year + ", price=" + price + ", langguage="+ langguage;}}
0 0
原创粉丝点击