package com.softeem.pull;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.kxml2.io.KXmlParser;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import com.softeem.dom.write.UserBean;

public class Demo1 {
public static void main(String[] args) throws XmlPullParserException,
IOException {

List<UserBean> userList = null;
UserBean userBean = null;
List<String> favoriteList = null;

// 1.创建解析器
KXmlParser parser = new KXmlParser();
// 2.设置输入流:保证 读取的编码方式和xml文档中声明的encoding一致
// parser.setInput(new FileInputStream(new File("src\\UserList.xml")),
// "utf-8");
parser.setInput(new InputStreamReader(new FileInputStream(new File(
"src\\UserList.xml")), "utf-8"));

// 3.解析
// parser.getEventType();获取事件类型。
// parser.next();继续读取下一个标签。
// parser.getName();获取当前标签的标签名
// parset.nextText();获取当前标签后的文本
// <username>aaa

int type = parser.getEventType(); // DOCUMENT_START
while (type != XmlPullParser.END_DOCUMENT) {
switch (type) {
case XmlPullParser.START_TAG:
if ("userlist".equals(parser.getName())) {
// userlist开始标签
userList = new ArrayList<UserBean>();
}

if ("user".equals(parser.getName())) {
// user开始标签
userBean = new UserBean();
// 读取id属性
// userBean.setId(parser.getAttributeValue(0));

// getAttributeCount():获取属性数量
// getAttributeName(int index):获取第index个属性名
// getAttributeValue(int index):获取第index个属性值
// getAttributeValue(String 命名空间,String 属性名);
// getNameSpace()获取命名空间
String nameSpace = parser.getNamespace();

String id = parser.getAttributeValue(nameSpace, "id");

System.out.println(parser.getAttributeValue(nameSpace,
"sex"));

userBean.setId(id);
}

if ("username".equals(parser.getName())) {
// username开始标签:
userBean.setUsername(parser.nextText());
}

if ("password".equals(parser.getName())) {
// password开始标签:
userBean.setPassword(parser.nextText());
}

if ("favoritelist".equals(parser.getName())) {
// favoritelist开始标签
favoriteList = new ArrayList<String>();
}

if ("favorite".equals(parser.getName())) {
// favorite开始标签
favoriteList.add(parser.nextText());
}
break;

case XmlPullParser.END_TAG:
if ("favoritelist".equals(parser.getName())) {
// favoritelist结束标签
userBean.setFavorites(favoriteList);
}

if ("user".equals(parser.getName())) {
// user结束标签
userList.add(userBean);
}

break;
}

// 跳转到下一个标签
type = parser.next();
}
}
}


UserList.xml

<?xml version="1.0" encoding="utf-8"?>
<userlist>
<user id="100" sex="男">
<username>aaa</username>
<password>aaa</password>
<favoritelist>
<favorite>aihao1</favorite>
<favorite>aihao1</favorite>
<favorite>aihao1</favorite>
</favoritelist>
</user>
<user id="101" sex="女">
<username>bbb</username>
<password>bbb</password>
<favoritelist>
<favorite>aihao1</favorite>
<favorite>aihao1</favorite>
<favorite>aihao1</favorite>
</favoritelist>
</user>
<user id="102" sex="人妖">
<username>ccc</username>
<password>ccc</password>
<favoritelist>
<favorite>aihao1</favorite>
<favorite>aihao1</favorite>
<favorite>aihao1</favorite>
</favoritelist>
</user>
</userlist>


pull方式解压所需jar包