1.准备解析的文件
<?xml version="1.0" encoding="UTF-8"?><weapons> <weapon material="玉" type="剑"> <name>问天剑</name> <atk>2000</atk> <user>语熙华</user> </weapon> <weapon material="铁" type="刀"> <name>皇刀</name> <atk>3000</atk> <user>九方玄玉</user> </weapon></weapons>
2.在项目的main目录下新建assets目录用于存放资源文件
3.新建一个bean对象承载xml的信息
package top.toly.parse.bean;/** * 作者:张风捷特烈 * 时间:2018/5/13:11:38 * 邮箱:1981462002@qq.com * 说明:武器类 */public class Weapon { private String name; private int atk; private String material; private String user; private String type; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAtk() { return atk; } public void setAtk(int atk) { this.atk = atk; } public String getUser() { return user; } public void setUser(String user) { this.user = user; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getMaterial() { return material; } public void setMaterial(String material) { this.material = material; } @Override public String toString() { return "Weapon{" + "name='" + name + '\'' + ", atk=" + atk + ", material='" + material + '\'' + ", user='" + user + '\'' + ", type='" + type + '\'' + '}'; } }
4.解析方法
private ArrayList<Weapon> parseXmlWithPull() { try {// XmlPullParserFactory factory = XmlPullParserFactory.newInstance();// XmlPullParser pullParser = factory.newPullParser(); XmlPullParser pullParser = Xml.newPullParser(); InputStream is = getAssets().open("weapon.xml"); pullParser.setInput(is, "utf-8"); int event = pullParser.getEventType();//触发第一个事件 while (event != XmlPullParser.END_DOCUMENT) {//没有终止 switch (event) { case XmlPullParser.START_DOCUMENT://文档开始 mWeapons = new ArrayList<>(); break; case XmlPullParser.START_TAG: switch (pullParser.getName()) {//拿到标签名称 case "weapon": mWeapon = new Weapon(); String type = pullParser.getAttributeValue(0); String material = pullParser.getAttributeValue(1); mWeapon.setType(type); mWeapon.setMaterial(material); break; case "name": String name = pullParser.nextText(); mWeapon.setName(name); break; case "atk": Short atk = new Short(pullParser.nextText()); mWeapon.setAtk(atk); break; case "user": String user = pullParser.nextText(); mWeapon.setUser(user); break; } break; case XmlPullParser.END_TAG: if ("weapon".equals(pullParser.getName())) { mWeapons.add(mWeapon); } break; } event = pullParser.next();//解析下一元素,更新event } } catch (Exception e) { e.printStackTrace(); } return mWeapons; }
5.调用方法,打印结果:
ArrayList<Weapon> weapons = parseXmlWithPull(); for (Weapon w : weapons) { Log.e(TAG, "onCreate: " + w.toString()); }
视频播放地址:
Xml的Pull解析(上):
http://v.youku.com/v_show/id_XMzYwNDI5Nzk0NA==.html
Xml的Pull解析(下-debug分析):
http://v.youku.com/v_show/id_XMzYwNDQzOTk2OA==.html
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦