sax封装xml文档数据

来源:互联网 发布:伦斯勒理工大学知乎 编辑:程序博客网 时间:2024/05/20 20:19
有一个xml文档
<?xml version="1.0" encoding="UTF-8" standalone="no"?><书架><书><书名 name="xxxx">java web</书名><作者>张大</作者><价格>102</价格></书><书><书名>spring</书名><作者>呜呜</作者><价格>55</价格></书></书架>

有一个javabean用来封装

package cn.itcast.sax;public class Book {private String name;private String author;private String price;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public String getPrice() {return price;}public void setPrice(String price) {this.price = price;}}

解析如下

package cn.itcast.sax;import java.util.ArrayList;import java.util.List;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 Demo3 {public static void main(String[] args) throws Exception {//1.创建工厂SAXParserFactory saxP = SAXParserFactory.newInstance();//2.得到解析器SAXParser parser = saxP.newSAXParser();//3.得到读取器XMLReader xmlR = parser.getXMLReader();//4.设置内容处理器BeanlistHandler bh = new BeanlistHandler();xmlR.setContentHandler(bh);//5.读取xml内容xmlR.parse("src/book.xml");List<Book> list = bh.getList();System.out.println(list);}}class BeanlistHandler extends DefaultHandler{private List list = new ArrayList();private String currentTag;private Book book;@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {currentTag = qName;if("书".equals(currentTag)){book = new Book();}}@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {if("书".equals(qName)){list.add(book);book = null;}currentTag = null;}@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {if("书名".equals(currentTag)){String name = new String(ch,start,length);book.setName(name);}if("作者".equals(currentTag)){String author = new String(ch,start,length);book.setAuthor(author);}if("价格".equals(currentTag)){String price = new String(ch,start,length);book.setPrice(price);}}public List getList() {return list;}}


0 0