设为首页 加入收藏

TOP

数据存储(二)--SAX引擎XML存储(附Demo)(二)
2015-07-20 18:04:52 来源: 作者: 【 】 浏览:4
Tags:数据 存储 --SAX 引擎 XML Demo
.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

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇uva 646 - The Gourmet Club(暴力) 下一篇邮件、短信、相机、图库的使用

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: