Android之Pull解析XML文件
来源:互联网 发布:德里克罗斯数据 编辑:程序博客网 时间:2024/05/22 16:38
Android默认使用内置的Pull解析器来解析xml文件。虽然SAX和DOM解析也能用,推荐使用pull解析。Pull解析类似于SAX解析,都采用事件驱动方式来进行解析。
原理:不断地调用Pull解析器的next方法获取下一个解析事件的类型,根据事件类型
判断是否读取到文件的尾部。当处于某个元素处时,可调用getAttributeValue()方法获
取该元素的属性值,也可调用nextText()获取文本节点的值。调用getName()获取标签名。
步骤:
1.拿到加载资源文件XML的解析器
2.通过解析器获得事件类型
3.根据事件类型判断并获取相应的值
那来做下吧,
1.准备了一个简单的xml文件:
movies.xml:
<?xml version="1.0" encoding="UTF-8"?><Movies> <Movie id="1"> <name>愤怒的小鸟</name> <type>animation</type> <year>2016</year> </Movie> <Movie id="2"> <name>叶问</name> <type>action</type> <language>chinese</language> </Movie></Movies>
在res文件下新建了一个文件夹xml:
2.可以看到最外层的节点 Movies 中包含两个 Movie ,而每个 Movie 中又包含三个属性:name 、type 、language
所以我们可以新建一个Movies 类来保存解析出来的每个 Movie , Movie中应该有四个属性 id 、name 、type 、language
Movies.java:
public class Movies {private String id,name,type,language,year;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getType() {return type;}public void setType(String type) {this.type = type;}public String getLanguage() {return language;}public void setLanguage(String language) {this.language = language;}public String getYear() {return year;}public void setYear(String year) {this.year = year;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn "id:"+id+","+"name:"+name;}}3.activity_main布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="pull" android:text="pull解析"/> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
4. PULL解析器调用该getEventType()返回事件类型。
XmlPullParser.END_DOCUMENT 文档解析结束
XmlPullParser.START_DOCUMENT文档开始解析
XmlPullParser.START_TAG 解析到开始标签
5.MainActivity:
public class MainActivity extends Activity {private TextView tv;private List<Movies>movies;private Movies movie;//用pull方式解析xml文件public void pull(View view){XmlResourceParser xmlResourceParser=getResources().getXml(R.xml.movies);try {//拿到第一个事件类型int type=xmlResourceParser.getEventType();while(type!=XmlResourceParser.END_DOCUMENT){if(type==XmlResourceParser.START_DOCUMENT){movies=new ArrayList<Movies>();}if(type==XmlResourceParser.START_TAG){if("Movie".equals(xmlResourceParser.getName())){movie=new Movies();String id=xmlResourceParser.getAttributeValue(null,"id");movie.setId(id);System.out.println("id:"+id);}if("name".equals(xmlResourceParser.getName())){String name=xmlResourceParser.nextText();movie.setName(name);System.out.println("name:"+name);}}if(type==XmlResourceParser.END_TAG){if("Movie".equals(xmlResourceParser.getName())){movies.add(movie);movie=null;}} type=xmlResourceParser.next();}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}tv.setText(movies.toString());}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv=(TextView) findViewById(R.id.tv);}}
效果图:
想要源码的点这:下载
0 0
- Android之Pull解析XML文件
- Android开发之Pull解析XML文件
- android PULL解析xml文件
- 【Android】PULL解析XML文件
- android pull解析XML文件
- android pull 解析xml文件
- android pull解析xml文件
- android解析xml文件pull
- android解析xml文件的方式之PULL解析
- Android--XML文件解析之PULL模式解析
- Android的XML文件解析之PULL解析
- Android学习笔记-Xml文件解析之PULL解析实战
- Android XML文件解析之pull解析器
- android之pull解析XML
- android之Pull解析XML
- Android 解析XML 之pull
- Android XML解析之Pull
- android之Pull解析XML
- 浅谈跳槽
- git使用教程
- Javascript之TextArea中的鼠标选择范围和移动
- Android 推荐几款好用的开源作品(一)之ViewPager指示器
- WebRTC技术调研
- Android之Pull解析XML文件
- DSP BIOS任务通信和同步(pend/post举例)
- 新的blog搭好了,对这里的一些文章进行了迁移,欢迎来访
- python安装第三方的包 工具对比
- SingleLinkNode with Pointers-to-Pointers
- 如何用javadoc命令,生成api帮助文档
- 。。。
- 确定公差,第一个数,最后一个数,即可求得总和
- EventBus