pull方式解析xml

前端之家收集整理的这篇文章主要介绍了pull方式解析xml前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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包

http://download.csdn.net/detail/hoho_12/9600193

http://download.csdn.net/detail/hoho_12/9600194

猜你在找的XML相关文章