加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml解析(使用pull解析)

发布时间:2020-12-16 09:37:03 所属栏目:百科 来源:网络整理
导读:1.要解析的xml文件 ?xmlversion= "1.0" encoding= "utf-8" ? infos cityid= "1" temp 20 ℃/ 30 ℃/temp weather 5 月 号多云转阴/weather wind南风 3 - 4 级/wind name上海/name pm 200 /pm /city "2" ℃/temp 21 号多云转阴/weather 6 7 级/wind name北京/

1.要解析的xml文件

<?xmlversion= "1.0" encoding= "utf-8" ?>
<infos>
<cityid= "1" >
<temp> 20 ℃/ 30 ℃</temp>
<weather> 5 号多云转阴</weather>
<wind>南风 3 - 4 级</wind>
<name>上海</name>
<pm> 200 </pm>
</city>
"2" >
℃</temp>
21 号多云转阴</weather>
6 7 级</wind>
<name>北京</name>
100 </pm>
</city>
"3" >
10 ℃</temp>
号多云转阴</weather>
<wind>北风 级</wind>
<name>长沙</name>
</pm>
</city>
</infos>

2.写一个实体类

package com.example.testpull;
public class WeatherInfo{
int id;
Stringname;
Stringwind;
Stringweather;
Stringtemp;
Stringpm;
@Override
public StringtoString(){
return "id=" +id+ ",name=" +name+ +wind+
+weather+ +temp+ +pm;
}
}
3.定义解析的方法

import java.io.IOException;
java.io.InputStream;
java.util.ArrayList;
java.util.List;
org.xmlpull.v1.XmlPullParser;
org.xmlpull.v1.XmlPullParserException;
android.util.Xml;
WeathearService{
static List<WeatherInfo>getWeatherInfos(InputStreamis)
throws XmlPullParserException,IOException{
XmlPullParserparser=Xml.newPullParser();
List<WeatherInfo>weatherInfos= null ;
WeatherInfoweatherInfo= ;
//初始化解析器
parser.setInput(is, );
type=parser.getEventType(); //得到事件类型
while (type!=XmlPullParser.END_DOCUMENT){
switch (type){
case XmlPullParser.START_TAG:
if ( "infos" .equals(parser.getName())){
weatherInfos= new ArrayList<WeatherInfo>();
} else "city" .equals(parser.getName())){
weatherInfo= WeatherInfo();
StringidStr=parser.getAttributeValue( 0 );
weatherInfo.id=Integer.parseInt(idStr);
"temp" .equals(parser.getName())){
Stringtemp=parser.nextText();
weatherInfo.temp=temp;
"weather" .equals(parser.getName())){
Stringweather=parser.nextText();
weatherInfo.weather=weather;
"wind" .equals(parser.getName())){
Stringwind=parser.nextText();
weatherInfo.wind=wind;
"name" .equals(parser.getName())){
Stringname=parser.nextText();
weatherInfo.name=name;
"pm" .equals(parser.getName())){
Stringpm=parser.nextText();
weatherInfo.pm=pm;
}
break ;
XmlPullParser.END_TAG:
.equals(parser.getName())){
//一个城市的信息处理完毕了
weatherInfos.add(weatherInfo);
;
}
;
}
type=parser.next();
}
return weatherInfos;
}
4.主main

java.util.List;
org.xmlpull.v1.XmlPullParserException;
android.os.Bundle;
android.app.Activity;
android.widget.TextView;
MainActivity extends Activity{
TextViewtv;
@Override
protected void onCreate(BundlesavedInstanceState){
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv=(TextView)findViewById(R.id.tv);
List<WeatherInfo>infos= ;
try {
infos=WeathearService
.getWeatherInfos(MainActivity. .getClassLoader()
.getResourceAsStream( "weather.xml" ));
catch (XmlPullParserExceptione){
e.printStackTrace();
(IOExceptione){
e.printStackTrace();
}
StringBuildersb= StringBuilder();
for (WeatherInfoinfo:infos){
Stringstr=info.toString();
sb.append(str);
sb.append( "n" );
}
tv.setText(sb);
}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读