下面我们来分析一下xml解析,分为五个步骤:
一、创建解析工厂
二、获得工厂的生产线
三、指定原材料
四、获得事件类型
五、开始工作
当我们解析以上xml文件时,可以得到如下结果:
文档开始
标签开始
标签开始
标签开始
id 1
标签开始
name 完美国际2
标签开始
company 完美世界
标签结束
标签开始
标签开始
id 2
标签开始
name LOL
标签开始
company Tencent
标签结束
标签开始
标签开始
id 3
标签开始
name DOTA
标签开始
company 暴雪
标签结束
标签结束
再通过链表List将数据进行存储即可!以下是实现代码
public static void main(String[] args) {
try {
//创建解析工厂
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
//从工厂获得解析器 ---生产线
XmlPullParser parser = factory.newPullParser();
//指定要加工的原材料 --- xml文件
parser.setInput(new FileReader("source/games.xml"));
//获得事件类型
int type = parser.getEventType();
//读取到 xml 的文档声明返回 0 START_DOCUMENT;
//读取到 xml 的文档结束返回 1 END_DOCUMENT ;
//读取到 xml 的开始标签返回 2 START_TAG
//读取到 xml 的结束标签返回 3 END_TAG
//读取到xml 的文本返回 4 TEXT
while(type!=1){
String tag = parser.getName();
//System.out.println(tag);
switch (type) {
case 0:
System.out.println("文档开始");
break;
case 1:
System.out.println("文档结束");
break;
case 2:
System.out.println("标签开始");
if (tag.equals("id")) {
System.out.println("id "+parser.nextText());
} else if (tag.equals("name")) {
System.out.println("name "+parser.nextText());
} else if (tag.equals("company")) {
System.out.println("company "+parser.nextText());
}
break;
case 3:
System.out.println("标签结束");
break;
case 4:
//System.out.println("文本");
break;
default:
break;
}
type = parser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
}