Android XML解析学习——创建XML
来源:互联网 发布:程序员 项目经理 编辑:程序博客网 时间:2024/06/05 08:58
一.基础知识
在前面的学习过程中,我们基本上比较全面的学习了Android平台上读取XML文档的方法,介绍了使用Java SAX、Android SAX、DOM和Pull等各种方式来读取XML文档内容。
目前为止,我们一直专注于解析已有的XML文档,实际上我们也是需要读XML的情形比较多。但是我们可能也有写XML的需要,应用程序可能需要将 XML 发送到远程服务器,或者需要以XML的形式保存数据等。因此在这部分内容中我们就来学习下Android平台上创建XML的方法。
Android系统中和创建XML相关的包为org.xmlpull.v1,在这个包中不仅提供了用来解析XML的Pull方式解析器XmlPullParser,还提供了一个用于创建XML的XmlSerializer。XmlSerializer没有像XmlPullParser那样提取XML事件,而是把它们推出到数据流OutputStream或Writer中。XmlSerializer提供了很直观的API,即使用startDocument开始文档,endDocument结束文档,startTag开始元素,endTag结束元素,text添加文本等。
下面我们就用上面介绍的创建XML方式来实现把解析出来的USGS地震数据重新保存为一个更简单的XML文件的Demo例子。
二.实例开发
我们要完成的效果图如下图1所示:
图1 创建XML
首先解析USGS的地震数据并以ListView的方式显示,然后点击最上方的“Create XML”按钮就会重新把解析获得的地震数据重新创建为一个XML文件。
新建一个Android工程AndroidXMLDemoSerialize。
添加进之前Demo工程AndroidXMLDemoSaxII中的EarthquakeEntry.java和AndroidSaxEarthquakeHandler.java文件。如果需要从本地读取xml数据的话,同时在assets文件夹下添加保存为xml格式了的USGS地震数据USGS_Earthquake_1M2_5.xml,如果需要联网读取的话,在manifest.xml文件中添加权限:
并修改res/layout下的main.xml为:
接下来就来新建添加一个类SerializeEarthquakeHandler,用来创建XML,内容如下:
在创建XML的方法中
//写Xml数据
public String writeXml(ArrayList<EarthquakeEntry> earthquakeEntryList)
首先创建XmlSerializer,
创建XmlSerializer有两种方式,一种是使用我们介绍的org.xmlpull.v1包中的工厂类XmlPullParserFactory。除了这种方式外,还可以使用Android SDK提供的实用工具包android.util中的类Xml的newSerializer()方法直接创建。
接着为XmlSerializer设置一个输出的Writer,
xmlSerializer.setOutput(xmlWriter);
这里将事件推送到了一个 java.io.StringWriter 实例中。
然后就可以使用具体的startDocument开始文档,endDocument结束文档,startTag开始元素,endTag结束元素,text添加文本等方法来创建具体的XML文档内容,具体方法参考上面的代码部分。从代码中我们可以看到,使用XmlSerializer创建XML还是相当直观和方便的。
最后添加AndroidXMLDemoSerialize.java文件中的内容为:
程序前部分是使用Android SAX的方式解析XML文档,然后在按钮的点击回调函数中把解析获得的地震数据重新创建为XML文档的形式,并分别用Log打印和保存为文件。
完成了,可以保存运行看下效果。 当点击屏幕上方的“Create XML”按钮时,程序就会创建一个形式更加简单的XML文档,同时在DDMS的LogCat里打印出创建的XML文档内容,如下图2所示:
图2 Log打印出的创建的XML文档内容
同时还会把创建的XML以文件的形式保存在系统中,我们可以在DDMS的File Explorer的data/data/com.ichliebephone.xml.serialize/files文件夹下看到,如下图3所示:
图3 保存着的创建出来的XML文件
并且我们可以把这个文件导出到电脑上,可以看到里面的内容为:
就是我们解析获得的所有地震条目,并且其中的各个元素及其内容、属性等按我们在SerializeEarthquakeHandler中指定的组织方式保存。
三.总结
在这块内容中我们学习了Android平台上创建XML的方法,从以上的Demo例子中我们可以发现Android上不仅解析XML方式多,并且方便,而且创建XML也是很方便直观,好理解和实现的。
到这块为止,我们就学习完了Android平台上和XML相关的内容,包括解析和创建XML等和XML相关的读与写两个方面,有了这些基础,我想处理Android上的XML文档等基本可以轻松应付了,希望以上的学习内容对你也有所帮助,感谢你一直的关注!
注:
参考资料:http://www.ibm.com/developerworks/cn/xml/x-android/
- Android XML解析学习——创建XML
- Android XML解析学习——创建XML .
- Android XML解析学习——创建XML
- XML解析学习——创建XML
- Android XML解析学习—Pull方式(HttpURLConnection xml)
- Android学习笔记——XML解析
- Android 创建与解析XML(一)—— 概述
- Android 创建与解析XML(一)—— 概述
- Android 创建与解析XML(一)—— 概述
- Android 创建与解析XML(一)—— 概述
- Android 创建与解析XML(一)—— 概述
- Android 创建与解析XML(一)—— 概述
- Android 创建与解析XML
- 学习笔记—解析XML
- Android解析和创建XML之学习笔记------SAX
- android XML解析学习——android.Sax
- android—DOM解析xml
- Android开发之XML解析——SAX解析XML
- 互联网的战争--腾讯与360
- Ubuntu10.10下tvtime没有声音的解决办法
- Android 2.1 android.R.drawable Icon Resources Android 2.2 快速入门
- 从360与TX之争看互联网的未来
- file_get_contents与curl效率及稳定性问题
- Android XML解析学习——创建XML
- tmp1103
- 技术角度看QQ大战360之动态客户端设计
- 华为C/C++笔试题
- 今天腾讯和360之战够写入中国互联网历史了
- 华为,我的第一份“卖身契”(笔试与面试经历)
- 为什么要使用handle……
- 腾讯:致广大QQ用户的一封信
- 自定义android RadioPreference组件