XML是一种常用的存储数据方式,在Android平台中内部很多地方使用了XML存储,比如轻量级的SharedPreferences类的存储其实保存在Data/data/[package name]/db。如果你使用的不是Android Dev Phone或没有Root权限,可以通过Android模拟器来查看。
XML解析主要有三种方式,SAX、DOM、PULL。常规在PC上开发我们使用Dom相对轻松些,但一些性能敏感的数据库或手机上还是主要采用SAX方式,SAX读取是单向的,优点:不占内存空间、解析属性方便,但缺点就是对于套嵌多个分支来说处理不是很方便。而DOM方式会把整个XML文件加载到内存中去,这里Android开发网提醒大家该方法在查找方面可以和XPath很好的结合如果数据量不是很大推荐使用,而PULL常常用在J2ME对于节点处理比较好,类似SAX方式,同样很节省内存,在J2ME中我们经常使用的KXML库来解析。
XML解析实例:-天气预报程序的开发:
Google为我们提供了很多利用天气预报的程序开发,比如MyLocation API和Google Weather API,这里我们就以中国上海来举例,查询上海天气我们执行http://www.google.com/ig/api?weather=Shanghai,China 可以看到,最后的weather=后面就是城市的拼音名称。
完整的XML文件结构为:
<?xml version="1.0" ?>
– <xml_api_reply version="1">
– <weather module_id="0" tab_id="0">
– <forecast_information>
<city data="Shanghai,China" />
<postal_code data="Shanghai,China" />
<latitude_e6 data="" />
<longitude_e6 data="" />
<forecast_date data="2008-12-17" />
<current_date_time data="2008-12-17 16:00:00 +0000" />
<unit_system data="SI" />
</forecast_information>
– <current_conditions>
<condition data="雾霾" />
<temp_f data="52" />
<temp_c data="11" />
<humidity data="湿度: 67%" />
<icon data="/images/weather/haze.gif" />
<wind_condition data="风向: 西、风速:6 (公里/小时)" />
</current_conditions>
– <forecast_conditions>
<day_of_week data="今天" />
<low data="5" />
<high data="16" />
<icon data="/images/weather/sunny.gif" />
<condition data="晴" />
</forecast_conditions>
– <forecast_conditions>
<day_of_week data="周四" />
<low data="2" />
<high data="11" />
<icon data="/images/weather/sunny.gif" />
<condition data="晴" />
</forecast_conditions>
– <forecast_conditions>
<day_of_week data="周五" />
<low data="5" />
<high data="15" />
<icon data="/images/weather/mostly_sunny.gif" />
<condition data="以晴为主" />
</forecast_conditions>
– <forecast_conditions>
<day_of_week data="周六" />
<low data="5" />
<high data="16" />
<icon data="/images/weather/sunny.gif" />
<condition data="晴" />
</forecast_conditions>
</weather>
</xml_api_reply>
怎么样是不是很方便呢?解析的方法,我们可以通过android自带的org.xml.sax.库来解决。完整的工程源代码我们稍后提供下载。
RSS