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
随时随地看视频