- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
android中数据存储及对xml的解析这几天恶补了一下XML解析,还是不够透彻呀,还是先打个钉吧。。。
XML作为一种业界公认的数据交换格式,在各个平台与语言之上,都有广泛使用和实现。
其标准型,可靠性,安全性......毋庸置疑。在android平台上,我们要想实现数据存储和数据交换,经常会使用到xml数据格式和xml文件。
小提示:android中存储数据一般有如下几种:SharedPreferences(参数化),XML文件,sqllite数据库,网络,ContentProvider(内容提供者)等。
在android中,操作xml文件,一般有几种方式:SAX操作,Pull操作,DOM操作等。其中DOM的方式,可能是大家最熟悉的,也是符合W3C标准的。
1)
在java平台中,有诸如DOM4J这样优秀的开源包,极大程度的方便大家使用DOM标准来操作XML文件。在javascript中,不同的浏览器解析引擎,对DOM的解析和操作也略有差异(不过这不是本章介绍的重点)。而DOM的方式,也有其缺点。通常一次性加载xml文件,再使用DOM的 api去进行解析,这样很大程度的消耗内存,对性能会有一定影响。而我们的android手机,虽然配置在不断的升级,但是内存方面,暂时还无法与传统的PC去媲美。所以,在android开发中,个人不太推荐使用DOM的方式来解析和操作XML。
[java] view plaincopy
package cn.itcast.service;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import cn.itcast.model.Person;
public class DomPersonService {
public ListgetPersons(InputStream stream) throws Throwable
{
Listlist =new ArrayList();
DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();
DocumentBuilder builder =factory.newDocumentBuilder();
Document dom = builder.parse(stream);//解析完成,并以dom树的方式存放在内存中。比较消耗性能
//开始使用dom的api去解析
Element root = dom.getDocumentElement();//根元素
NodeList personNodes = root.getElementsByTagName_r(person);//返回所有的person元素节点
//开始遍历啦
for(int i=0;i p
{
Person person =new Person();
Element personElement =(Element)personNodes.item(i);
person.setId(new Integer( personElement.getAttribute(id)));//将person元素节点的属性节点id的值,赋给person对象
NodeList personChildrenNodes =personElement.getChildNodes();//获取person节点的所有子节点
//遍历所有子节点
for(int j=0;j p
{
//判断子节点是否是元素节点(如果是文本节点,可能是空白文本,不处理)
if(personChildrenNodes.item(j).getNodeType()==Node.ELEMENT_NODE)
{
//子节点--元素节点
Element childNode =(Element)personChildrenNodes.item(j);
if(name.equals(childNode.getNodeName()))
{
//如果子节点的名称是“name”.将子元素节点的第一个子节点的值赋给person对象
person.setName(childNode
文档评论(0)