给大家分享一下 XmlPullParser 的解析代码。这里我只给了读的代码,也许你会说我太懒了吧,为什么不给写的代码呢?我想在android的开发里,大家保存数据用的是Sqlite吧,哈哈。针对xml的解析多半是用在接收web的数据,您说对吗?
拿去用的时候改改哦,开始Ctrl+C吧。
public class PullXMLReader {
public static List<XmlObject> readXml() {
XmlPullParser parser = Xml.newPullParser();
try {
String URL = "你的xml的路径 URL";//http://www.xxx.com/xxx.xml
java.net.URL url = new java.net.URL(URL);
URLConnection connection = url.openConnection();
HttpURLConnection httpConnection = (HttpURLConnection) connection;
int responseCode = httpConnection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
InputStream inStream = httpConnection.getInputStream();
parser.setInput(inStream, "UTF-8");
int eventType = parser.getEventType();
XmlObject xmlObj = null;
List<XmlObject> objList = null;
while (eventType != XmlPullParser.END_DOCUMENT) {// Xml文档未结束
switch (eventType) {
case XmlPullParser.START_DOCUMENT:// Xml文档开始事件,可以进行数据初始化处理
objList = new ArrayList<XmlObject>();
break;
case XmlPullParser.START_TAG:// Xml开始元素事件 如:<item>
/****************************************************************/
/**
* XML 格式为
* <xml_list ver="1.0">
* <item id="1" name="name1"/>
* <item id="2" name="name2"/>
* <item id="3" name="name3"/>
* </xml_list>
*/
String name = parser.getName();
if (name.equalsIgnoreCase("item")) {
xmlObj = new XmlObject();
xmlObj.setId(parser.getAttributeValue(0));//得到元素的属性。 0是指取id的值
xmlObj.setName(parser.getAttributeValue(1));//得到元素的属性。 1是指取name的值
}
/****************************************************************/
/**
* XML 格式为
* <xml_list ver="1.0">
* <item>
* <id>1</id>
* <name>name-1</name>
* </item>
* <item>
* <id>2</id>
* <name>name-2</name>
* </item>
* </xml_list>
*/
// String name = parser.getName();
// if (name.equalsIgnoreCase("item")) {
// xmlObj = new XmlObject();
// } else if (name.equalsIgnoreCase("id") && xmlObj != null) {
// xmlObj.setId(parser.nextText());//得到元素的内容
// } else if (name.equalsIgnoreCase("name") && xmlObj != null) {
// xmlObj.setName(parser.nextText());//得到元素的内容
// }
break;
case XmlPullParser.END_TAG:// Xml结束元素事件 如:</item>
if (parser.getName().equalsIgnoreCase("item") && xmlObj != null) {
objList.add(xmlObj);
xmlObj = null;
}
break;
}
eventType = parser.next();//下一个事件类型
}
inStream.close();
return objList;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}