Android之XmlPullParser解析城市列表XML
2017-03-14 17:11
531 查看
效果图:
(1)首先我们放一个文件名为cities.xml的XML文件到assets目录下,文件内容如下:
文件目录结构:
然后创建一个javabean,其内容如下:
(2)在src目录下写一个接口ICityparser,其内容如下:
在src目录下写一个上面接口的实现类CityparserImpl,其内容如下,代码已经详细注释:
项目非常简单。
demo地址:http://download.csdn.net/detail/wxk105/9781674
(1)首先我们放一个文件名为cities.xml的XML文件到assets目录下,文件内容如下:
<?xml version="1.0" encoding="UTF-8"?> <cities> <city> <name>北京</name> <code>101</code> </city> <city> <name>上海</name> <code>021</code> </city> <city> <name>南京</name> <code>020</code> </city> <city> <name>广州</name> <code>050</code> </city> </cities>
文件目录结构:
然后创建一个javabean,其内容如下:
package com.example.xiaoke.xmldemo; import android.os.Parcel; import android.os.Parcelable; /** * Q164454216 * Created by xiaoke on 2017/3/14. */ public class CityBean implements Parcelable { private String name; private String code; @Override public String toString() { return "CityBean{" + "name='" + name + '\'' + ", code='" + code + '\'' + '}'; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(this.name); dest.writeString(this.code); } public CityBean() { } protected CityBean(Parcel in) { this.name = in.readString(); this.code = in.readString(); } public static final Creator<CityBean> CREATOR = new Creator<CityBean>() { @Override public CityBean createFromParcel(Parcel source) { return new CityBean(source); } @Override public CityBean[] newArray(int size) { return new CityBean[size]; } }; }这里我实现了序列化,看个人需要。
(2)在src目录下写一个接口ICityparser,其内容如下:
/** * Q164454216 * Created by xiaoke on 2017/3/14. */ public interface ICityparser { /** * * 解析输入流,获取City列表 * @param is * @return * @throws Exception */ List<CityBean> parse(InputStream is) throws Exception; }
在src目录下写一个上面接口的实现类CityparserImpl,其内容如下,代码已经详细注释:
/** * Q164454216 * Created by xiaoke on 2017/3/14. */ public class CityparserImpl implements ICityparser { @Override public List<CityBean> parse(InputStream is) throws Exception { List<CityBean> list=null; CityBean city=null; //创建XmlPullParser实例 XmlPullParser xmlPullParser= Xml.newPullParser(); //设置输入流,并指明编码方式 xmlPullParser.setInput(is,"UTF-8"); //产生第一个事件 int eventType = xmlPullParser.getEventType(); while (eventType!=XmlPullParser.END_DOCUMENT){ switch (eventType){ case XmlPullParser.START_DOCUMENT: list=new ArrayList<>(); break; case XmlPullParser.START_TAG: if (xmlPullParser.getName().equals("city")){// 判断开始标签元素是否是city city=new CityBean(); }else if (xmlPullParser.getName().equals("name")){ eventType=xmlPullParser.next();//让解析器指向name属性的值 city.setName(xmlPullParser.getText());// 得到name标签的属性值,并设置city的name }else if (xmlPullParser.getName().equals("code")){ eventType=xmlPullParser.next(); city.setCode(xmlPullParser.getText()); } break; case XmlPullParser.END_TAG: if (xmlPullParser.getName().equals("city")) { // 判断结束标签元素是否是city list.add(city); // 将city添加到citys集合 city = null; } break; } // 进入下一个元素并触发相应事件 eventType = xmlPullParser.next(); } return list; }(3)在src目录下的Activity内容如下:
public class MainActivity extends AppCompatActivity { private List<CityBean> list=new ArrayList<>(); private TextView tv_name; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_name= (TextView) findViewById(R.id.tv_name); initData(); } /** * 填充数据 */ private void initData() { try { //通过assertmanager的open方法获取到city.xml文件的输入流 InputStream inputStream=this.getAssets().open("cities.xml"); //初始化自定义的CityparserImpl CityparserImpl cityparser=new CityparserImpl(); //调用CityparserImpl的parse()方法,将输入流传进去解析,返回的链表结果赋给List list = cityparser.parse(inputStream); } catch (Exception e) { e.printStackTrace(); } String cityStr=""; for (CityBean cityBean:list){ cityStr+=cityBean.toString(); } tv_name.setText(cityStr); } }
项目非常简单。
demo地址:http://download.csdn.net/detail/wxk105/9781674
相关文章推荐
- Android XmlPullParser工具解析
- android xml解析 XmlPullParser的使用
- Android解析XML之XmlPullParser
- Android使用XmlPullParser解析XML以及天气预报信息api使用
- android使用XmlPullParser来解析XML文件
- android xml解析 XmlPullParser的使用
- android xml解析 XmlPullParser的使用
- 请帮忙用android的XmlPullParser解析xml中的节点
- Android开发学习---使用XmlPullParser解析xml文件
- android使用XmlPullParser来解析XML文件
- bak 6.android xml解析 XmlPullParser的使用.
- android XmlPullParser解析xml
- android解析xml文件之XmlPullParser
- Android_XmlPullParser解析xml文件_141014
- android xml解析 XmlPullParser的使用
- Android 解析XML文件 XmlPullParser 方法
- android 解析xml -XmlPullParser
- android xml解析 XmlPullParser的使用
- bak 6.android xml解析 XmlPullParser的使用.
- Android中采用XmlPullParser解析xml文件错误的有关问题