80,351
社区成员
发帖
与我相关
我的任务
分享
package com.th.zuoye;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
import javax.management.modelmbean.XMLParseException;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
/*
* 时间:150413
* 功能:使用XMLPULL解析城市信息
*/
public class PullZy {
/**
* @param args
* @throws XmlPullParserException
* @throws IOException
*/
public List<Provence> pullParser() throws XmlPullParserException, IOException {
List<Provence> provences = null;
Provence provence = null;
List<City> cities = null;
City city = null;
List<District> districts = null;
District district = null;
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();
FileInputStream fis = new FileInputStream("citys_weather.xml");
parser.setInput(fis, "utf-8");
int event = parser.getEventType();
while(event != XmlPullParser.END_DOCUMENT) {
switch (event) {
case XmlPullParser.START_DOCUMENT:
System.out.println("开始解析啦");
provences = new ArrayList<Provence>();
break;
//解析并未像 SAX 解析那样监听元素的结束,而是在开始处(START_TAG)完成了大部分处理,
//因为当某个元素开始时,可以调用 解析器实例的nextText() 从 XML 文档中提取所有字符数据,
case XmlPullParser.START_TAG:
String tName = parser.getName();
System.out.println("到头标签啦" + tName);
if (tName.equals("p")) {
provence = new Provence();
cities = new ArrayList<City>();
int count = parser.getAttributeCount();//得到属性个数
for (int i = 0; i < count; i++) {
String attrName = parser.getAttributeName(i);
String attrValue = parser.getAttributeValue(i);
if (attrName.equals("p_id")) {
provence.setId(attrValue);
}
}
}
if (tName.equals("pn")) {
provence.setName(parser.nextText());
}
if (tName.equals("c")) {
city = new City();
districts = new ArrayList<District>();
int count = parser.getAttributeCount();//得到属性个数
for (int i = 0; i < count; i++) {
String attrName = parser.getAttributeName(i);
String attrValue = parser.getAttributeValue(i);
if (attrName.equals("c_id")) {
city.setId(attrValue);
}
}
}
if (tName.equals("cn")) {
city.setName(parser.nextText());
}
if (tName.equals("d")) {
district = new District();
int count = parser.getAttributeCount();//得到属性个数
for (int i = 0; i < count; i++) {
String attrName = parser.getAttributeName(i);
String attrValue = parser.getAttributeValue(i);
if (attrName.equals("d_id")) {
district.setId(attrValue);
}
}
district.setName(parser.nextText());
//districts.add(district);
}
break;
case XmlPullParser.END_TAG:
System.out.println("到结束标签啦" + parser.getName());
if ("d".equals(parser.getName())) {
districts.add(district); //??
System.out.println(111);
}
if ("c".equals(parser.getName())) {
cities.add(city);
city.setDistricts(districts);
}
if ("p".equals(parser.getName())) {
provences.add(provence);
provence.setCitys(cities);
}
break;
}
event = parser.next();
}
return provences;
}
}