Android(安卓)中使用Pull解析XML文件
16lz
2021-01-24
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow
解析XML文件是非常常用的功能,在Android客户端中,经常与服务器通信都需要xml文件的支持,我们这里介绍一个
简单的xml文件的解析,就是使用android中的pull方法进行解析。在java中,有dom解析和sax解析,这个pull解析有些类
似于sax解析,他也是一行一行的读取然后解析内容的方法.
首先看一下这个简单的xml文件
<?xml version="1.0" encoding="utf-8"?><infos> <city id="1"> <temp>-1℃/5℃temp> <weather>多云weather> <wind>南风3-4级wind> <name>上海name> <pm>200pm> city><city id="2"> <temp>-1℃/5℃temp> <weather>多云weather> <wind>南风3-4级wind> <name>北京7-8name> <pm>800pm> city><city id="3"> <temp>-7℃/5℃temp> <weather>多云weather> <wind>南风3-4级wind> <name>哈尔滨name> <pm>100pm> city>infos>
然后我们直接解析这个xml文件,在textview中显示一下
这里是代码,首先是业务Bean
package com.bird.weather;public class WeatherBean { private int id; private String name; private String wind; private String weather; private String temp; private String pm; @Override public String toString() { return "WeatherBean [id=" + id + ", name=" + name + ", wind=" + wind + ", weather=" + weather + ", temp=" + temp + ", pm=" + pm + "]"; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getWind() { return wind; } public void setWind(String wind) { this.wind = wind; } public String getWeather() { return weather; } public void setWeather(String weather) { this.weather = weather; } public String getTemp() { return temp; } public void setTemp(String temp) { this.temp = temp; } public String getPm() { return pm; } public void setPm(String pm) { this.pm = pm; }}
然后是解析xml文件的主要代码
package com.bird.weather;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import android.util.Xml;public class ParseXml { public static List parse(InputStream is) { List list = null; WeatherBean bean = null; try { XmlPullParser parser = Xml.newPullParser(); // 初始化解析器 parser.setInput(is, "utf-8"); int type = parser.next(); while (type != XmlPullParser.END_DOCUMENT) { switch (type) { case XmlPullParser.START_TAG: if ("infos".equals(parser.getName())) { list = new ArrayList(); } else if ("city".equals(parser.getName())) { bean = new WeatherBean(); bean.setId(Integer.valueOf(parser.getAttributeValue(0))); } else if ("temp".equals(parser.getName())) { String temp = parser.nextText(); bean.setTemp(temp); } else if ("weather".equals(parser.getName())) { String weather = parser.nextText(); bean.setWeather(weather); } else if ("wind".equals(parser.getName())) { String wind = parser.nextText(); bean.setWind(wind); } else if ("name".equals(parser.getName())) { String name = parser.nextText(); bean.setName(name); } else if ("pm".equals(parser.getName())) { String pm = parser.nextText(); bean.setPm(pm); } break; case XmlPullParser.END_TAG: if ("city".equals(parser.getName())) { // 一个城市的信息处理完毕 list.add(bean); bean = null; } break; } type = parser.next(); } } catch (Exception e) { e.printStackTrace(); } return list; }}
最后在mainactivity中使用这个代码,使用类加载器完成这个简单的功能
package com.bird.weather;import java.util.List;import android.os.Bundle;import android.app.Activity;import android.widget.TextView;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv = (TextView) findViewById(R.id.tv); List list = ParseXml.parse(MainActivity.class.getClassLoader().getResourceAsStream("test.xml")); StringBuffer sb = new StringBuffer(); for(WeatherBean bean : list){ String str = bean.toString(); sb.append(str); sb.append("\n"); } tv.setText(sb.toString()); } }
这样看来,解析xml文件还是非常简单的
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow
更多相关文章
- android中修改默认语言
- android桌面文件夹美化
- 如何制作Android(安卓)ROM
- Android(安卓)AIDL(Android(安卓)Interface Definition Language
- android目录结构介绍(寒假学习1)
- Android(安卓)Studio编译输出apk文件修改文件名
- 百度地图开发-申请ak及相关配置
- 《Android(安卓)安全(一)》AndroidManifest.xml之allowBackup属性
- unity与android交互(1)