`
段海波
  • 浏览: 318892 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java使用dom解析google天气格式的xml文档

    博客分类:
  • Java
阅读更多

此段代码旨在解析类似google天气格式的xml文档,如需解析其它格式的稍做改动即可。

google天气预报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="" />

<postal_code data="" />

<latitude_e6 data="30670000" />

<longitude_e6 data="104019996" />

<forecast_date data="2011-11-16" />

<current_date_time data="2011-11-16 22:00:00 +0000" />

<unit_system data="SI" />

</forecast_information>

<current_conditions>

<condition data="多云" />

<temp_f data="59" />

<temp_c data="15" />

<humidity data="湿度: 72%" />

<icon data="/ig/images/weather/cn_cloudy.gif" />

<wind_condition data="风向: 东、风速:2 米/秒" />

</current_conditions>

<forecast_conditions>

<day_of_week data="周三" />

<low data="12" />

<high data="17" />

<icon data="/ig/images/weather/mostly_sunny.gif" />

<condition data="以晴为主" />

</forecast_conditions>

<forecast_conditions>

<day_of_week data="周四" />

<low data="11" />

<high data="18" />

<icon data="/ig/images/weather/mostly_sunny.gif" />

<condition data="以晴为主" />

</forecast_conditions>

<forecast_conditions>

<day_of_week data="周五" />

<low data="11" />

<high data="19" />

<icon data="/ig/images/weather/mostly_sunny.gif" />

<condition data="以晴为主" />

</forecast_conditions>

<forecast_conditions>

<day_of_week data="周六" />

<low data="8" />

<high data="19" />

<icon data="/ig/images/weather/mostly_sunny.gif" />

<condition data="以晴为主" />

</forecast_conditions>

</weather>

</xml_api_reply>

 

 

java解析代码如下所示:

 

package dsh.bikegis.dao.impl;

 

import java.io.FileNotFoundException;

import java.io.IOException;

 

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;

 

import org.w3c.dom.Document;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import org.xml.sax.SAXException;

 

import dsh.bikegis.dao.XmlDocument;

 

/**

 * 解析Google天氣XML文档

 * 

 * @author NanGuoCan

 * 

 */

public class WeatherParse implements XmlDocument {

 

/**

* 解析傳來的google天氣xml

* @param fileName

* 文件全路径名称

*/

@Override

public void parserXml(String fileName) {

try {

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

DocumentBuilder db = dbf.newDocumentBuilder();

Document document = db.parse(fileName);

NodeList xml=document.getChildNodes();

NodeList xml_api_reply =  xml.item(0).getChildNodes();

Node weather=xml_api_reply.item(0);

NodeList weathers=weather.getChildNodes();

//解析城市及時間預測信息

Node forecast_information=weathers.item(0);

NodeList informationNode=forecast_information.getChildNodes();

for(int i=0;i<informationNode.getLength();i++){

System.out.println(informationNode.item(i).getNodeName()+":"+informationNode.item(i).getAttributes().item(0));

}

//解析當前天氣

Node current_conditions=weathers.item(1);

NodeList currentInfo=current_conditions.getChildNodes();

for(int i=0;i<currentInfo.getLength();i++){

System.out.println(currentInfo.item(i).getNodeName()+":"+currentInfo.item(i).getAttributes().item(0));

}

//解析本周未來幾天天氣

for (int i = 2; i < weathers.getLength(); i++) {

Node forecast_conditions = weathers.item(i);

NodeList forecast_conditionsInfo = forecast_conditions.getChildNodes();

for (int j = 0; j < forecast_conditionsInfo.getLength(); j++) {

System.out.println(forecast_conditionsInfo.item(j).getNodeName()

+ ":" + forecast_conditionsInfo.item(j).getAttributes().item(0));

}

}

System.out.println("解析完毕");

} catch (FileNotFoundException e) {

System.out.println(e.getMessage());

} catch (ParserConfigurationException e) {

System.out.println(e.getMessage());

} catch (SAXException e) {

System.out.println(e.getMessage());

} catch (IOException e) {

System.out.println(e.getMessage());

}

 

}

}


分享到:
评论

相关推荐

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

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

    java解析xml的4种方法和json格式

    Java中的`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`可以实现DOM解析。以下是一个简单的示例: ```java import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document;...

    PB 解析xml格式串

    Python中可以使用`xml.etree.ElementTree`库进行解析,Java中可使用DOM或SAX解析器。 3. **XML到PB转换**:这个过程需要先定义PB消息类型,匹配XML数据的结构。然后编写解析代码,将XML元素映射到对应的PB消息字段...

    JSP XML实现谷歌天气预报

    但是,由于JSTL的XML标签库并不支持所有XML操作,对于更复杂的解析需求,可能需要借助Java代码,比如创建一个DOM解析器实例,或者使用SAX解析器逐事件处理XML流。 在实际应用中,我们还需要关注**安全性**和**错误...

    使用Java自动生成Java类和XML文件

    4. **处理注释和格式化**:为了提高代码可读性,可以添加适当的Javadoc注释,并使用代码格式化工具如Google的`JavaFormat`来保持代码风格一致。 5. **整合到项目**:生成的Java类通常会加入到项目的源代码目录,而...

    android基于xml的天气解析

    其中,SAX解析器是一种事件驱动的解析器,它读取XML文档并触发一系列的事件,例如开始元素、结束元素、字符数据等,这使得SAX解析器在处理大型XML文档时比DOM更节省内存。 以下是使用SAX解析XML天气数据的基本步骤...

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

    这种方式相较于DOM解析器,内存占用较低,适合处理大体积的XML文档。 要开始解析Google天气预报的XML,我们需要创建一个SAXContentHandler类,该类继承自DefaultHandler。在这个类中,我们将定义处理开始元素、结束...

    Android创建与解析XML(二)——详解Dom方式

    Dom方式创建与解析XML文档是一种使用编程语言,如Java,在Android平台实现的方式。这种方式利用了DOM(文档对象模型)的API,其中JAXP(Java API for XML Processing)提供的DocumentBuilder类是用来创建和解析XML...

    Java获取Google的简单天气预报

    2. **XML处理**:Google天气API返回的数据格式可能是XML,Java中处理XML数据可以使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`等类来解析。首先,创建一个解析器,然后解析XML字符串,...

    Android解析XML使用WebView显示

    - **DOM解析器**:Android提供了DocumentBuilderFactory类,用于创建DOM解析器。通过这个解析器,我们可以获取整个XML文档的树形结构,并通过Node接口操作XML元素。 - **SAX解析器**:适用于处理大型XML文件,因为...

    java链接oracle数据库生成xml文件

    为了生成XML文件,我们使用DOM4J库,它是一个强大的Java XML API,可以方便地创建、解析和操作XML文档。首先,需要添加DOM4J的依赖,如`dom4j-1.6.1.jar`。然后,创建Document对象,定义Element结构,并填充从数据库...

    Java-Java操作XML和JSON教程

    1. **DOM解析器**:DOM解析器将整个XML文档加载到内存中的一个树形结构,允许开发者通过节点遍历和操作XML。例如,可以使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`接口来创建和操作XML...

    struts dom4j json gson xml 拦截器 类型转换

    例如,服务器端的Struts通过拦截器处理用户请求,使用DOM4J或XML解析配置文件,执行相应的业务逻辑;然后,可以通过Gson将处理结果转换为JSON格式,通过HTTP响应发送给客户端;客户端接收到JSON数据后,可以使用...

    通过Java获取Google的简单天气预报

    由于Google返回的天气信息是以XML格式组织的,因此我们需要使用DOM解析器对其进行解析。这里使用了`DocumentBuilderFactory`和`DocumentBuilder`来构建DOM树: ```java DocumentBuilderFactory factory = ...

    JAVA工具类(整合,xml,json,MD5,加密解密)

    - DOM解析:DOM(Document Object Model)是一种将XML文档映射为树形结构的方法,通过它可以访问和修改XML文档的任何部分。Java中的`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类可以用来...

    java读取kml文件数据

    这里可能会使用到如JAXB(Java Architecture for XML Binding)这样的库,它能将XML文档映射为Java对象,便于操作。具体步骤可能包括以下几步: 1. 加载KML文件:使用Java的FileInputStream类打开文件,然后通过...

    获取Google的简单天气预报

    根据提供的文件信息,本文将详细解释如何通过Java编程语言来获取Google提供的天气预报...综上所述,通过Java程序可以很方便地获取并解析Google提供的天气预报服务中的数据,这对于开发天气应用或进行数据分析非常有用。

    Android网络下的XML解析和生成.

    1. DOM解析器:DOM(Document Object Model)模型是把XML文档加载到内存中,形成一棵树形结构,可以方便地遍历和修改整个文档。但是,由于DOM将整个XML文件加载到内存,对于大型XML文件可能会消耗大量资源。 2. SAX...

    xml文件源码数据提取

    在实际项目中,你可能需要根据需求组合使用这些技术,例如,使用DOM解析XML,结合XPath快速定位数据,然后使用JAXB将结果转换为Java对象。通过熟练掌握这些方法,你可以高效地从XML文件和网页中提取数据,满足各种...

Global site tag (gtag.js) - Google Analytics