`

解析xml的另外一种方法(Google weather)

    博客分类:
  • XML
阅读更多
今天学习了一下如何获取天气,也学习了另外一种解析xml的方法

通过google api获取的天气的xml
<?xml version="1.0"?>
<xml_api_reply version="1">
	<weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1"
		row="0" section="0">

		<forecast_information>
			<city data="Beijing, Beijing" />
			<postal_code data="beijing" />
			<latitude_e6 data="" />
			<longitude_e6 data="" />
			<forecast_date data="2011-01-13" />
			<current_date_time data="2011-01-13 16:00:00 +0000" />
			<unit_system data="US" />
		</forecast_information>

		<current_conditions>
			<condition data="Clear" />
			<temp_f data="23" />
			<temp_c data="-5" />
			<humidity data="Humidity: 39%" />
			<icon data="/ig/images/weather/sunny.gif" />
			<wind_condition data="Wind: N at 2 mph" />
		</current_conditions>

		<forecast_conditions>
			<day_of_week data="Thu" />
			<low data="12" />
			<high data="37" />
			<icon data="/ig/images/weather/sunny.gif" />
			<condition data="Clear" />
		</forecast_conditions>

		<forecast_conditions>
			<day_of_week data="Fri" />
			<low data="8" />
			<high data="28" />
			<icon data="/ig/images/weather/sunny.gif" />
			<condition data="Clear" />
		</forecast_conditions>
		<forecast_conditions>
			<day_of_week data="Sat" />
			<low data="12" />
			<high data="26" />
			<icon data="/ig/images/weather/sunny.gif" />
			<condition data="Clear" />
		</forecast_conditions>

		<forecast_conditions>
			<day_of_week data="Sun" />
			<low data="12" />
			<high data="30" />
			<icon data="/ig/images/weather/sunny.gif" />
			<condition data="Clear" />
		</forecast_conditions>
	</weather>

</xml_api_reply>



解析这个xml的code
class getWeather implements Runnable {

		@Override
		public void run() {
			// TODO Auto-generated method stub
			String weather = "";
			String url = "http://www.google.com/ig/api?&weather=beijing";
			DefaultHttpClient client = new DefaultHttpClient();
			HttpUriRequest req = new HttpGet(url);
			HttpResponse resp;
			try {
				resp = client.execute(req);
				HttpEntity ent = resp.getEntity();
				InputStream stream = ent.getContent();
//				printEntity(stream);
				DocumentBuilder b = DocumentBuilderFactory.newInstance()
						.newDocumentBuilder();
				Document d = b.parse(new InputSource(stream));
				NodeList n = d.getElementsByTagName("forecast_conditions");
				for (int i = 0; i < n.getLength(); i++) {
					weather += n.item(i).getChildNodes().item(0)
							.getAttributes().item(0).getNodeValue();
					weather += ", ";
					weather += (Integer.parseInt(n.item(i).getChildNodes()
							.item(1).getAttributes().item(0).getNodeValue()) - 32) * 5 / 9;
					weather += " ~ ";
					weather += (Integer.parseInt(n.item(i).getChildNodes()
							.item(2).getAttributes().item(0).getNodeValue()) - 32) * 5 / 9;
					weather += ", ";
					weather += n.item(i).getChildNodes().item(4)
							.getAttributes().item(0).getNodeValue();
					
					weather += "\n";
				}
			} catch (ClientProtocolException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (ParserConfigurationException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (SAXException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println(" weather is " + weather);

		}
	};


这种方式不需要知道每个节点的属性名称,但缺点和优点都是它,但server改变了每个节点的顺序,得到的数据就会错了。


分享到:
评论

相关推荐

    xml解析google天气预报

    使用SAX解析XML时,我们需要实现一个SAX解析器的处理器类,这个类需要继承自Java中的`DefaultHandler`。在处理器中,我们需要重写如`startElement`、`endElement`和`characters`等方法。当解析器读取到XML文档的相应...

    google天气预报XML-Pull解析版(完全解析)

    XML-Pull解析是一种轻量级的解析方法,与DOM(Document Object Model)和SAX(Simple API for XML)不同,它不需要一次性加载整个XML文档到内存中。XML-Pull解析器在读取XML文档时,只处理当前的事件,这样可以节省...

    C# google weather api 天气预报

    C#是Microsoft开发的一种面向对象的编程语言,广泛应用于Windows桌面应用、Web应用以及游戏开发等。C#具有丰富的类库和强大的功能,非常适合进行网络请求和XML解析。 要调用Google Weather API,我们需要具备以下...

    android的对google天气预报的Sax解析

    SAX解析器是一种事件驱动的解析方式,它逐行读取XML文档,遇到特定的元素开始、结束或有属性时触发回调函数。这种方式相较于DOM解析器,内存占用较低,适合处理大体积的XML文档。 要开始解析Google天气预报的XML,...

    Google Weather android源码项目

    这个项目是Google为Android开发者提供的一种学习和参考资源,旨在帮助他们理解如何在Android平台上构建功能丰富的天气应用。通过研究这个源码,我们可以深入探讨Android应用开发的多个关键知识点。 首先,我们要...

    WeatherApp

    在用户界面设计上,WeatherApp很可能采用了Material Design指南,这是一种Google推出的统一设计语言,旨在提供一致性和良好的用户体验。应用可能包含了多个Activity,每个Activity对应一个特定的屏幕或功能,如主...

    GsonDemo解析json实例

    JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,采用键值对的形式表示数据,例如: ```json { "name": "John", "age": 30, "city": "New York" } `...

    Android使用GoogleWeather制作天气预报程序[定义].pdf

    Google Weather API是一种网络服务,可以向开发人员提供全球天气信息。在Android应用程序中,可以通过HTTP请求从该API获取特定地点的天气预报数据。 3. XML解析: 在本例中,Google Weather API返回的数据格式为XML...

    谷歌天气Api

    XML(Extensible Markup Language)是一种用于存储和传输结构化数据的标记语言。在谷歌天气API中,服务器返回的数据就是XML格式。开发者需要解析这个XML文件,提取出如温度、湿度、风速等关键信息。在C#中,可以使用...

    android版本的天气预报

    SAX是一种事件驱动的解析器,它不会一次性加载整个XML文档到内存,而是逐个处理元素,这样对于处理大型数据流更为高效。在获取到天气API的XML响应后,开发者会使用SAX解析器来解析这些数据,提取出所需的天气信息,...

    Weather,科特林应用程序.zip

    科特林是Google推出的一种现代、静态类型的编程语言,主要用于Android应用开发,它具有简洁的语法和强大的功能,受到了广大开发者喜爱。 【描述解析】 描述中的信息非常简洁,仅给出了项目的名字"Weather,科特林...

    Android天气小部件源码

    Pull解析器介于两者之间,提供了一种流式处理方式,易于使用。 6. **WeatherWidgetTest**:这可能是项目中的测试代码或者测试用例文件,通常包含单元测试或集成测试,用于验证天气小部件的功能是否正常工作。测试...

    android weather

    Retrofit提供了一种简洁的接口定义方式,能够将网络请求与业务逻辑解耦。 2. **数据解析**:接收到的天气数据通常是JSON或XML格式,需要进行解析。Android提供了`Gson`库用于JSON解析,`SimpleXML`或`Jackson`库...

    Java获取google天气信息,且能根据ip地址获取所属地天气

    Google提供了一种基于XML或JSON格式的天气API,可以通过发送HTTP请求来获取。在Java中,我们可以使用`HttpURLConnection`或者`HttpClient`等网络通信库来发送GET请求。例如,构造一个包含特定城市的URL(如`...

    google天气预报的实现

    - 示例中的`cleanCache`方法实现了一种定时清理缓存的机制,每隔24小时检查一次缓存,并移除过期的数据。这种方法可以有效地减少网络请求次数,提高应用程序的整体性能。 #### 四、示例代码分析 1. **HTML解析** ...

    Weather-app_I_-源码.rar

    Swift是一种强大且易于学习的编程语言,用于构建iOS、iPadOS、macOS、watchOS和tvOS的应用。 - **Android:** 如果是Java或Kotlin,那么需要使用Android Studio。这两种语言都是Android应用开发的常用选择,Kotlin...

    android weatherwidget source code

    Android小部件是桌面快捷方式的一种形式,它们可以在用户的主屏幕上显示动态信息,如天气、时钟或新闻更新。它们是由AppWidgetProvider类控制,并通过XML布局文件定义其外观。 在"weatherWidget-master"这个源码...

    安卓Android源码——weather.rar

    首先,让我们关注"weather"这一关键词。这通常意味着源码中可能包含了一个天气应用程序,它可能涉及网络请求、数据解析、UI设计以及本地存储等多个方面。天气应用的开发通常涉及到以下几个核心组件: 1. **网络通信...

Global site tag (gtag.js) - Google Analytics