main.xml [html] view plaincopyprint? <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <EditText android:id="@+id/CityName" android:layout_width="250dp" android:layout_height="wrap_content" android:layout_marginTop="2dip" android:text="shenzhen"> </EditText> <Button android:id="@+id/ButtonGo" android:layout_width="70dp" android:layout_height="wrap_content" android:layout_gravity="right|top" android:text="go!go!"> </Button> </LinearLayout> <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:scrollbars="vertical" android:background="#ffffff" android:textColor="#000000" android:id="@+id/infoText" /> </LinearLayout> weatherActivity.java [html] view plaincopyprint? public class weatherActivity extends Activity { private Button mButton = null; private TextView mTextView = null; private EditText mCityNameEdit = null; final String DEBUG_TAG = "weather"; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mTextView = (TextView)findViewById(R.id.infoText); mTextView.setMovementMethod(ScrollingMovementMethod.getInstance()); mCityNameEdit = (EditText)findViewById(R.id.CityName); mButton = (Button) findViewById(R.id.ButtonGo); mButton.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { connect(); } }); } } 1.连接网络,基于Http协议。 一般是发送请求到某个应用服务器。此时需要用到HttpURLConnection,打开连接,获得数据流,读取数据流。 private void connect() { //http地址 //String httpUrl = "http://flash.weather.com.cn/wmaps/xml/shenzhen.xml"; String httpUrl = "http://flash.weather.com.cn/wmaps/xml/"+mCityNameEdit.getText().toString()+".xml"; String resultData = "";//获得的数据 URL url = null; try { //构造一个URL对象 url = new URL(httpUrl); } catch (MalformedURLException e) { Log.e(DEBUG_TAG, "MalformedURLException"); } if (url != null) { try { //使用HttpURLConnection打开连接 HttpURLConnection urlConn = (HttpURLConnection) url.openConnection(); //得到读取的内容(流) InputStreamReader in = new InputStreamReader(urlConn.getInputStream()); // 为输出创建BufferedReader BufferedReader buffer = new BufferedReader(in); String inputLine = null; //使用循环来读取获得的数据 while (((inputLine = buffer.readLine()) != null)) { //我们在每一行后面加上一个"\n"来换行 resultData += inputLine + "\n"; } in.close(); urlConn.disconnect(); //设置显示取得的内容 if ( resultData != null ) { mTextView.setText(""); weatherInfoXmlPullParser(resultData);//解析XML } else { mTextView.setText("读取的内容为NULL"); } } catch (IOException e) { Log.e(DEBUG_TAG, "IOException"); } } else { Log.e(DEBUG_TAG, "Url NULL"); } } 2.用PULL方式解析xml PULL方式读xml会回调事件: 读取到xml的声明返回 START_DOCUMENT; 读取到xml的结束返回 END_DOCUMENT ; 读取到xml的开始标签返回 START_TAG 读取到xml的结束标签返回 END_TAG 读取到xml的文本返回 TEXT public void weatherInfoXmlPullParser(String buffer){ XmlPullParser xmlParser = Xml.newPullParser();//获得XmlPullParser解析器 ByteArrayInputStream tInputStringStream = null; if (buffer != null && !buffer.trim().equals("")) { tInputStringStream = new ByteArrayInputStream(buffer.getBytes()); } else { return ; } try { //得到文件流,并设置编码方式 //InputStream inputStream=mContext.getResources().getAssets().open(fileName); //xmlParser.setInput(inputStream, "utf-8"); xmlParser.setInput(tInputStringStream, "UTF-8"); //获得解析到的事件类别,这里有开始文档,结束文档,开始标签,结束标签,文本等等事件。 int evtType=xmlParser.getEventType(); while(evtType!=XmlPullParser.END_DOCUMENT)//一直循环,直到文档结束 { switch(evtType) { case XmlPullParser.START_TAG: String tag = xmlParser.getName(); //如果是city标签开始,则说明需要实例化对象了 if (tag.equalsIgnoreCase("city")) { weatherInfo info = new weatherInfo(); //取出标签中的一些属性值 info.setCityWeatherInfo(xmlParser); mTextView.append(info.getCityWeatherInfo()+"\n"); } break; case XmlPullParser.END_TAG: //标签结束 default:break; } //如果xml没有结束,则导航到下一个节点 evtType=xmlParser.next(); } } catch (XmlPullParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } weatherInfo.java public class weatherInfo{ static String cityname = "深圳"; static String stateDetailed ="多云转阵雨"; static String tem1 ="28"; static String tem2 ="22"; static String temNow ="25"; static String windState="微风"; static String windDir="北风"; static String windPower="2级"; static String humidity="63%"; static String time="10:30"; public void setCityWeatherInfo(XmlPullParser xmlParser) { cityname = xmlParser.getAttributeValue(null, "cityname"); stateDetailed = xmlParser.getAttributeValue(null, "stateDetailed"); tem1 = xmlParser.getAttributeValue(null, "tem1"); tem2 = xmlParser.getAttributeValue(null, "tem2"); temNow = xmlParser.getAttributeValue(null, "temNow"); windState = xmlParser.getAttributeValue(null, "windState"); windDir = xmlParser.getAttributeValue(null, "windDir"); windPower = xmlParser.getAttributeValue(null, "windPower"); humidity = xmlParser.getAttributeValue(null, "humidity"); time = xmlParser.getAttributeValue(null, "time"); } public String getCityWeatherInfo() { String info = "所在城市:"+cityname + "\n" +"天气情况:"+stateDetailed + ", 湿度:" +humidity + "\n" +"现在气温:"+temNow + "°C, "+"最低:"+tem2 + "°C, "+"最高:"+tem1 + "°C\n" +"风情:"+windState +", 风向:"+windDir + ", 风力:"+windPower + "\n" +"更新时间:"+time + "\n"; return info; } }
相关推荐
android xml pull解析示例,自己mark下,备忘
android json与xml解析 例子 demo 包含Json和xml解析 其中json包括解析带数组的和不带数组的; xml包括DOM解析和SAX解析
本例使用多种方式获取本地XML文件,还有通过url获取XML文件,使用Android内置的PULL解析器对XML文件进行解析,例子是解析我国各个省市。 《Android解析XML文件》博文路径:...
Android 生成和PULL解析xml,生成的例子和PULL解析的例子,很详细。。
android解析xml例子,包含SAM、DOM、PULL三种解析方式Demo
学习android xml解析了好例子,希望对你有帮助!
android开发例子-----pull解析xml天气信息
Android中XML解析。一个很简单的例子,用SAX的方法解析
本例子主是实现了在android中xml的解析 包括sax和dom解析方法
XML解析之SAX解析DEMO,之前在播控上有介绍,但是代码排版太乱了,这个就是Android4.0网络编程中的SAX解析例子。
下面是一个SAX解析XML的示例(有点长,因为详细注解了SAX事件处理的所有方法),SAX API中主要有四种处理事件的接口,它们分别是ContentHandler,DTDHandler, EntityResolver 和 ErrorHandler 。下面的例子可能...
自己手动写的一个解析xml文件的小例子,希望对于初学Android xml解析的的朋友有些帮助。
一个采用DomReader、SAXReader、PullReader三种方式对xml文件进行解析的小例子,源码有简单的注释,运行以后会在LogCat里打印解析出的内容,实际应用的时候可以可以稍微改一下就行,例子读取的是储存在assets里面的...
一个采用DomReader、SAXReader、PullReader三种方式对xml文件进行解析的小例子,源码有简单的注释,运行以后会在LogCat里打印解析出的内容,实际应用的时候可以可以稍微改一下就行,例子读取的是储存在assets里面的...
这个是帮人做的毕业设计代码,应用了5中设计模式,设计到xml文件的解析,界面使用了列表,可以根据关键字及符合条件动态查询列表中内容。是android界面设计及入门学习很好的例子。 精品代码。
该资源包含了Android中解析XML文件的三种方法: SAX, Pull, DOM。每种方法都有相应的例子进行解释,代码清晰,易懂!特别适合入门!
android项目的一个pull解析的小DEMO
android sax解析xml 完整的例子及说明,解压后就可以运行,相信你的选择
Sax解析xml文件详细例子,解析复杂节点的xml,把内容显示到view中,例子简单完整,易用
能够独立运行的例子,希望对你们有帮助,学习愉快哟