标签:style blog class code tar ext
InputStream is=getAssets().open("books.xml");
SAXParserFactory saxFactory=SAXParserFactory.newInstance();
SAXParser saxparser=saxFactory.newSAXParser();
MyHandle myhandle=new MyHandle();
saxparser.parse(is, myhandle);
books=myhandle.getBooks();
for(Book book:books){
Log.i(TAG, book.toString());
}
public class MyHandle extends DefaultHandler{ private List<Book> books; private StringBuilder stringbuilder; private Book book; public List<Book> getBooks(){ System.out.println("getbooks"); return books; } @Override public void characters(char[] ch, int start, int length) throws SAXException { // TODO Auto-generated method stub super.characters(ch, start, length); stringbuilder.append(ch, start, length); } @Override public void endDocument() throws SAXException { // TODO Auto-generated method stub super.endDocument(); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { // TODO Auto-generated method stub if(localName.equals("id")){ book.setId(stringbuilder.toString()); } else if(localName.equals("name")){ book.setName(stringbuilder.toString()); } else if(localName.equals("author")){ book.setAuthor(stringbuilder.toString()); }else if(localName.equals("book")){ books.add(book); } } @Override public void startDocument() throws SAXException { // TODO Auto-generated method stub books=new ArrayList<Book>(); stringbuilder=new StringBuilder(); } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // TODO Auto-generated method stub super.startElement(uri, localName, qName, attributes); if(localName.equals("book")){ book=new Book(); } stringbuilder.setLength(0); } }
public interface BookParser { public List<Book> parse(InputStream in)throws Exception; public String serialize(List<Book> books)throws Exception; }2、实现此接口
public class BookPullParse implements BookParser { @Override public List<Book> parse(InputStream in) throws Exception { // TODO Auto-generated method stub List<Book> books=null; Book book=null; XmlPullParser parser=Xml.newPullParser(); parser.setInput(in,"UTF-8"); int event=parser.getEventType(); while(event!=parser.END_DOCUMENT){ switch(event){ case XmlPullParser.START_DOCUMENT: books=new ArrayList<Book>(); break; case XmlPullParser.START_TAG: if(parser.getName().equals("book")){ book=new Book(); } else if(parser.getName().equals("id")){ event=parser.next(); book.setId(parser.getText()); } else if(parser.getName().equals("name")){ event=parser.next(); book.setName(parser.getText()); } else if(parser.getName().equals("author")){ event=parser.next(); book.setAuthor(parser.getText()); } break; case XmlPullParser.END_TAG: if(parser.getName().equals("book")){ books.add(book); book=null; } break; } event=parser.next(); } return books; } @Override public String serialize(List<Book> books) throws Exception { // TODO Auto-generated method stub return null; } }3、调用parser解析
InputStream in=getAssets().open("books.xml");
BookParser parser=new BookPullParse();
List<Book> books=parser.parse(in);
for(Book book:books){
System.out.println(book);
}
标签:style blog class code tar ext
原文地址:http://blog.csdn.net/hades0821/article/details/25422051