【Android学习笔记】XML存储

小魏原创,欢迎转载~
转载请注明出处:http://blog.csdn.net/xiaowei_cqu/article/details/7081359


这两天继续弄我们聊天的小软件,尝试用XML来存储聊天记录。

不过最终是放弃了,选择使用SQLite来存储记录,这是后话了……

先把XML的存储与解析的代码放来把(网上有很多,这儿就是小魏自己复习总结一下)


XMl存储使用XML序列化对象XmlSerializer,看代码就知道怎么写,很简单:

private ChatInfo info;
	public String FirstWriteXml(){
		XmlSerializer serializer = Xml.newSerializer();  
		StringWriter writer = new StringWriter();  
		try{  
		serializer.setOutput(writer);  
		 
		// <?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
		serializer.startDocument("UTF-8",true);  
		serializer.text("\n");
//		System.out.println("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?> ");
		
		serializer.startTag("","chatlog");  
		serializer.text("\n");
		
		serializer.startTag("","chatinfo");  
		serializer.text("\n");
//		System.out.println("<chatinfo>");

		//<name>小魏</name>
		serializer.text("\t");
		serializer.startTag("","name");  
		serializer.text(info.getChatName().toString());  
		serializer.endTag("","name");  
		serializer.text("\n");
//		System.out.println("<name>"+info.getChatName()+"</name");
		
		//<time>2011-11-27 20:00</time>
		serializer.text("\t");
		serializer.startTag("","time");  
		serializer.text(info.getChatTime().toString());  
		serializer.endTag("","time");  
		serializer.text("\n");
//		System.out.println("<name>"+info.getChatTime()+"</name");
		 
		//<info>Hi~~~</info>
		serializer.text("\t");
		serializer.startTag("","info");  
		serializer.text(info.getChatString().toString());  
		serializer.endTag("","info");
		serializer.text("\n");
//		System.out.println("<name>"+info.getChatString()+"</name");
		
		// </chatinfo>  
		serializer.endTag("","chatinfo");
		serializer.text("\n");
//		System.out.println("</chatinfo> ");
		
		serializer.endTag("","chatlog");
		serializer.text("\n");
//		System.out.println("</chatinfo> ");
		serializer.endDocument();
		
		
		return writer.toString();  
	}  
		catch(Exception e)  
		{  
			throw new RuntimeException(e);  
		}  
		
	}

写出来的效果如下:

<?xml version="1.0" encoding="UTF-8"?>
<chatlog>
<chatinfo>
<name>小魏</name>
<time>2011-11-27 20:00</time>
<info>Hi~~~</info>
</chatinfo>
</chatlog>

这里需要注意,<chatlog>这个标签是必须的,因为xml里一定要有一颗主树,如果有多条记录,但是没有最外这层结构,比如下面的例子有多条记录:

<?xml version="1.0" encoding="UTF-8"?>
<chatinfo>
<name>小魏</name>
<time>2011-11-27 20:00</time>
<info>Hi~~~</info>
</chatinfo>
<chatinfo>
<name>我</name>
<time>2011-11-27 20:01</time>
<info>你好!</info>
</chatinfo>
<chatinfo>
<name>小魏</name>
<time>2011-11-27 20:02</time>
<info>聊天模块终于搞完了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</info>
</chatinfo>
<chatinfo>
<name>我</name>
<time>2011-11-27 20:02</time>
<info>太好啦!</info>
</chatinfo>


使用SAXParserFactory解析时,解析玩第一条记录就会停止,而且会报错:



  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值