您的位置:首页 > 理论基础 > 计算机网络

Android网络数据解析——XML

2018-03-17 17:37 471 查看
在网络上传输的数据最常见的两种格式是XML和JSON。本节主要介绍XML格式的数据解析。
xml格式的数据如下:<CATALOG>
    <CD>
        <TITLE>Empire Burlesque</TITLE>
        <ARTIST>Bob Dylan</ARTIST>
        <COUNTRY>USA</COUNTRY>
        <COMPANY>Columbia</COMPANY>
        <PRICE>10.90</PRICE>
        <YEAR>1985</YEAR>
    </CD>

    <CD>
        <TITLE>Hide your heart</TITLE>
        <ARTIST>Bonnie Tyler</ARTIST>
        <COUNTRY>UK</COUNTRY>
        <COMPANY>CBS Records</COMPANY>
        <PRICE>9.90</PRICE>
        <YEAR>1988</YEAR>
    </CD>
</CATALOG>一.Android中解析XML格式数据有三种方法:
PULL

SAX

DOM
二.PULL解析
 PULL内置于 Android 系统中。也是官方解析布局文件所使用的方式。
Pull 与 SAX 有点类似,都提供了类似的事件,如开始元素和结束元素。
不同的是,SAX 的事件驱动是回调相应方法,需要提供回调的方法,而后在 SAX 内部自动调用相应的方法。
而Pull解析器并没有强制要求提供触发的方法。因为他触发的事件不是一个方法,而是一个数字。它使用方便,效率高。
代码演示,如何取出上面xml文件中的所有title字段? public void parseXMLWithPull(String data){
try {
XmlPullParserFactory xmlPullParserFactory = XmlPullParserFactory.newInstance();
XmlPullParser xmlPullParser = xmlPullParserFactory.newPullParser();
xmlPullParser.setInput(new StringReader(data));
int event_type = xmlPullParser.getEventType();
while(event_type != XmlPullParser.END_DOCUMENT) {
if(event_type == XmlPullParser.START_TAG){
if(xmlPullParser.getName().equals("TITLE")) {
Log.e("Mylog", "TITLE is : " + xmlPullParser.nextText());
}
}
event_type = xmlPullParser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
}这个方法传入的data就是xml文件。解析的具体说明:
2.1首先获取一个XmlPullParserFactory的示例,然后获取XmlPullParser的对象,接着调用xmlPullParser.setIput()可以将xml数据传入开始解析。
2.2通过getEventType()得到当前的解析事件,放在一个while循环中不断解析。如果解析事件不等于XmlPullParser.END_DOCUMENT,说明解析还没完成,就调用next()方法来获取下一个解析事件。
2.3xmlPullParser.getName()可以获取每个节点的名字。然后可以根据自己的需求进行判断处理。
2.4xmlPullParser.nextText()获取节点内具体的内容。
三.SAX解析
SAX使用流式处理的方式,它并不记录所读内容的相关信息。
它是一种以事件为驱动的XML API,解析速度快,占用内存少。使用回调函数来实现。缺点是不能倒退。
四.DOM解析
DOM(Document Object Model) 是一种用于XML文档的对象模型,可用于直接访问XML文档的各个部分。它是一次性全部将内容加载在内存中,生成一个树状结构,它没有涉及回调和复杂的状态管理 缺点是加载大文档时效率低下。
五.各种解析方式对比
内存占用:SAX、Pull比DOM要好;
编程方式:SAX采用事件驱动,在相应事件触发的时候,会调用用户编好的方法,也即每解析一类XML,就要编写一个新的适合该类XML的处理类。DOM是W3C的规范,Pull简洁。
访问与修改:SAX采用流式解析,DOM随机访问。
访问方式:SAX,Pull解析的方式是同步的,DOM逐字逐句。
下篇文章主要介绍了另外一种数据——JSON的解析方法 :点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android xml