.getValue("book:price"));
book.setPublisher(attributes.getValue("book:publisher"));
}
super.startElement(uri, localName, qName, attributes);
}
3.处理完每一个XML元素。也就是遇到这样的结束标记的时候会触发endElement方法,在该事件中可以获得当前处理完元素的全部信息。
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
if(qName.equals("book"))
{
if(stringBuffer.toString()!=null && !stringBuffer.toString().equals(""))
{
book.setCount(Integer.parseInt(stringBuffer.toString().trim()));
stringBuffer.setLength(0);//必须清空缓冲区
}
dataList.add(book);
}
super.endElement(uri, localName, qName);
}
4.处理完XML文件。如果SAX引擎将整个XML文件全部扫描完就会出发endDocument方法。这个方法可能不是必须的,但在这个方法中可以完成一些收尾工作,比如说释放资源等。在该例中我没有使用。
5.读取字符分析点。这是一个很重要的分析点。如果没有这个分析点, 前面的工作相当于白做,虽然扫描了XML文件,但是没有保存.....而这个分析点所对应的characters事件方法的主要作用就是保存SAX读取的XML文件内容。具体的说就是
12
中的“12”
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
stringBuffer.append(ch,start,length);
super.characters(ch, start, length);
}
使用SAX解析XML:
public class MainActivity extends Activity
{
private List
books;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InputStream inStream = getResources().openRawResource(R.raw.books);
BookXMLParser parser = new BookXMLParser();
books = ((BookXMLParser)XMLTool.parse(inStream, parser)).getData();
if(books!=null && books.size()>0)
{
for(int i = 0;i
写XML文件
public static void WriteXML(List
books, OutputStream out) throws Exception
{
XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(out, "UTF-8");
serializer.startDocument("UTF-8", true);
serializer.startTag(null, "books");
for (Book book : books)
{
serializer.startTag(null, "book");
serializer.attribute(null, "book:name", book.getName());
serializer.attribute(null, "book:id",book.getId());
serializer.attribute(null, "book:price", book.getPrice());
serializer.attribute(null, "book:publisher",book.getPublisher());
serializer.text(String.valueOf(book.getCount()));
serializer.endTag(null, "book");
}
serializer.endTag(null, "books");
serializer.endDocument();
out.flush();
out.close();
}
Demo:http://download.csdn.net/detail/tangnengwu/7664719