- 浏览: 1379729 次
- 性别:
- 来自: 江西
文章分类
- 全部博客 (287)
- oracle (30)
- Java (73)
- MySQL (16)
- Myeclipse/eclipse (12)
- javascript (15)
- JSP/Servlet (7)
- maven (14)
- AJAX (2)
- JQuery (9)
- tomcat (8)
- spring (21)
- Linux (28)
- PHP (9)
- UI (1)
- 编程错误及处理 (38)
- 多线程 (18)
- hibernate (10)
- Web Service (3)
- struts2 (6)
- log4j (3)
- SVN (4)
- DWR (1)
- lucene (1)
- 正则表达式 (4)
- jstl (2)
- SSL (3)
- POI (1)
- 网络编程 (1)
- 算法 (2)
- xml (4)
- 加密解密 (1)
- IO (7)
- jetty (2)
- 存储过程 (1)
- SQL Server (1)
- MongoDB (1)
- mybatis (1)
- ETL (1)
- Zookeeper (1)
- Hadoop (5)
- Redis (1)
- spring cloud (1)
最新评论
-
ron.luo:
牛逼,正解!
maven设定项目编码 -
lichaoqun:
java.sql.SQLException: Can't call commit when autocommit=true -
Xujian0000abcd:
Thanks...
Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the clas -
renyuan2ni:
[i][b][u]引用[list]
[*][img][flas ...
Manual close is not allowed over a Spring managed SqlSession -
851228082:
宋建勇 写道851228082 写道<!-- 文件拷贝时 ...
maven设定项目编码
HandlerXML.java--处理xml
ParsersXML.java--显示处理结果
执行效果如下:
**********预测数据**********
预测数据 [week=周四, hight=33, low=24, icon=/ig/images/weather/thunderstorm.gif, condition=雷阵雨]
预测数据 [week=周五, hight=32, low=24, icon=/ig/images/weather/chance_of_storm.gif, condition=可能有暴风雨]
预测数据 [week=周六, hight=31, low=24, icon=/ig/images/weather/chance_of_storm.gif, condition=可能有暴风雨]
预测数据 [week=周日, hight=31, low=24, icon=/ig/images/weather/chance_of_storm.gif, condition=可能有暴风雨]
**********预报信息**********
2012-06-07 17:00:00 +0000
2012-06-07
Ganzhou, Jiangxi
**********当天数据**********
/ig/images/weather/mostly_cloudy.gif
湿度: 60%
88
风向: 西南、风速:3 米/秒
多云
31
ForecastCondition.java--对象
所需jar包可从附件下载
引自:http://www.2cto.com/kf/201204/127466.html
package cn.com.songjy.xml; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class HandlerXML extends DefaultHandler { List<ForecastCondition> forecast_conditions = new ArrayList<ForecastCondition>(); ForecastCondition forecast_condition = new ForecastCondition(); Map<String, Object> forecast_information = new HashMap<String, Object>(); Map<String, Object> current_condition = new HashMap<String, Object>(); boolean current_condition_flag = false; boolean forecast_information_flag = false; boolean forecast_conditions_flag = false; public List<ForecastCondition> getForecastConditions() { return forecast_conditions; } public Map<String, Object> getForecastInformation(){ return forecast_information; } public Map<String, Object> getCurrentConditions(){ return current_condition; } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if("forecast_information".equals(qName)) forecast_information_flag = true; if(forecast_information_flag && "city".equals(qName)) forecast_information.put("city", attributes.getValue("data")); if(forecast_information_flag && "forecast_date".equals(qName)) forecast_information.put("forecast_date", attributes.getValue("data")); if(forecast_information_flag && "current_date_time".equals(qName)) forecast_information.put("current_date_time", attributes.getValue("data")); if("current_conditions".equals(qName)) current_condition_flag = true; if(current_condition_flag && "condition".equals(qName)) current_condition.put("condition", attributes.getValue("data")); if(current_condition_flag && "temp_f".equals(qName)) current_condition.put("temp_f", attributes.getValue("data")); if(current_condition_flag && "temp_c".equals(qName)) current_condition.put("temp_c", attributes.getValue("data")); if(current_condition_flag && "humidity".equals(qName)) current_condition.put("humidity", attributes.getValue("data")); if(current_condition_flag && "icon".equals(qName)) current_condition.put("icon", attributes.getValue("data")); if(current_condition_flag && "wind_condition".equals(qName)) current_condition.put("wind_condition", attributes.getValue("data")); if("forecast_conditions".equals(qName)) forecast_conditions_flag = true; if (forecast_conditions_flag && "day_of_week".equals(qName)) { String week = attributes.getValue("data"); forecast_condition = new ForecastCondition();//不可省略,否则将永远是最后一条记录 forecast_condition.setWeek(week); } if (forecast_conditions_flag && "low".equals(qName)) { int low = Integer.parseInt(attributes.getValue("data")); forecast_condition.setLow(low); } if (forecast_conditions_flag && "high".equals(qName)) { int hight = Integer.parseInt(attributes.getValue("data")); forecast_condition.setHight(hight); } if (forecast_conditions_flag && "icon".equals(qName)) { String icon = attributes.getValue("data"); forecast_condition.setIcon(icon); } if (forecast_conditions_flag && "condition".equals(qName)) { String condition = attributes.getValue("data"); forecast_condition.setCondition(condition); } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { if("current_conditions".equals(qName)) current_condition_flag = false; if("forecast_information".equals(qName)) forecast_information_flag = false; if("forecast_conditions".equals(qName)) forecast_conditions_flag = false; if ("forecast_conditions".equals(qName)) { forecast_conditions.add(forecast_condition); } } }
ParsersXML.java--显示处理结果
package cn.com.songjy.xml; import java.io.IOException; import java.io.StringReader; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import org.xml.sax.InputSource; import org.xml.sax.SAXException; public class ParsersXML { public static void main(String[] args) { Map<String, Object> map = readXml(); List<ForecastCondition> forecastConditions = (List<ForecastCondition>) map.get("forecastConditions"); Map<String, Object> forecast_information = (Map<String, Object>) map.get("forecast_information"); Map<String, Object> current_condition = (Map<String, Object>) map.get("current_condition"); System.out.println("**********预测数据**********"); for (ForecastCondition weather : forecastConditions) { System.out.println(weather.toString()); } System.out.println("**********预报信息**********"); for (String key : forecast_information.keySet()) { System.out.println(forecast_information.get(key).toString()); } System.out.println("**********当天数据**********"); for (String key : current_condition.keySet()) { System.out.println(current_condition.get(key).toString()); } } public static Map<String, Object> readXml() { Map<String, Object> map = new HashMap<String, Object>(); SAXParserFactory factory = SAXParserFactory.newInstance(); try { SAXParser parser = factory.newSAXParser(); InputSource inputSource = new InputSource(new StringReader(getWeatherAsString())); HandlerXML handlerXML = new HandlerXML(); try { parser.parse(inputSource, handlerXML); map.put("forecastConditions", handlerXML.getForecastConditions()); map.put("forecast_information", handlerXML.getForecastInformation()); map.put("current_condition", handlerXML.getCurrentConditions()); return map; } catch (IOException e) { e.printStackTrace(); } } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } return null; } //调用公开API获取XML数据 public static String getWeatherAsString() { String strUrl = "http://www.google.com/ig/api?hl=zh-cn&weather=Ganzhou,Jiangxi"; HttpGet getRequest = new HttpGet(strUrl); DefaultHttpClient client = new DefaultHttpClient(); try { HttpResponse response = client.execute(getRequest); if (response.getStatusLine().getStatusCode() == 200) { HttpEntity entity = response.getEntity(); return EntityUtils.toString(entity); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } }
执行效果如下:
**********预测数据**********
预测数据 [week=周四, hight=33, low=24, icon=/ig/images/weather/thunderstorm.gif, condition=雷阵雨]
预测数据 [week=周五, hight=32, low=24, icon=/ig/images/weather/chance_of_storm.gif, condition=可能有暴风雨]
预测数据 [week=周六, hight=31, low=24, icon=/ig/images/weather/chance_of_storm.gif, condition=可能有暴风雨]
预测数据 [week=周日, hight=31, low=24, icon=/ig/images/weather/chance_of_storm.gif, condition=可能有暴风雨]
**********预报信息**********
2012-06-07 17:00:00 +0000
2012-06-07
Ganzhou, Jiangxi
**********当天数据**********
/ig/images/weather/mostly_cloudy.gif
湿度: 60%
88
风向: 西南、风速:3 米/秒
多云
31
ForecastCondition.java--对象
package cn.com.songjy.xml; public class ForecastCondition { private String week; private int low; private int hight; private String icon; private String condition; @Override public String toString() { return "预测数据 [week=" + week + ", hight=" + hight + ", low=" + low + ", icon=" + icon + ", condition=" + condition + "]"; } public String getWeek() { return week; } public void setWeek(String week) { this.week = week; } public int getLow() { return low; } public void setLow(int low) { this.low = low; } public int getHight() { return hight; } public void setHight(int hight) { this.hight = hight; } public String getIcon() { return icon; } public void setIcon(String icon) { this.icon = icon; } public String getCondition() { return condition; } public void setCondition(String condition) { this.condition = condition; } }
所需jar包可从附件下载
引自:http://www.2cto.com/kf/201204/127466.html
- commons-codec-1.6.jar (227.3 KB)
- 下载次数: 3
- commons-logging-1.1.1.jar (59.3 KB)
- 下载次数: 1
- httpclient-4.2.jar (414.7 KB)
- 下载次数: 2
- httpcore-4.2.jar (218 KB)
- 下载次数: 2
发表评论
-
java.io.NotSerializableException: java.util.ArrayList$SubList
2016-03-15 11:36 2862错误信息: 原代码: if (null != dto ... -
java.lang.NoSuchMethodError
2015-10-30 19:50 1233在执行命令 java -Djava.ext.dirs=./de ... -
OutOfMemoryError
2015-01-07 10:49 676错误信息: 执行命令(修改前): java -Djava. ... -
自定义ClassLoader
2014-12-14 17:13 888一、自定义类加载器代码: package foo; im ... -
URL传递中文参数乱码问题
2014-03-14 12:55 1154项目特殊要求,form表单使用get方式提交,由此出现了中文乱 ... -
Java使用正则进行奇偶替换
2013-12-30 11:20 1593/** * 将位于偶数位的数字1替换为2 */ ... -
Java调用ping命令
2013-11-26 10:26 3713package cn.com.songjy; impor ... -
Linux开机启动Java程序
2013-11-25 15:26 3589一、编写启动Java程序shell脚本(smssend.sh) ... -
单例模式
2013-11-05 09:58 791Java之美[从菜鸟到高手演变]之设计模式 Java开发中 ... -
判定2个对象相等之重写equals方法
2013-10-18 11:03 1096package cn.com.songjy.test; ... -
SAX解析XML文件示例
2013-09-13 17:32 1046package cn.com.songjy.test.xml; ... -
二分查找算法(Binary Search)
2013-09-13 17:01 2450项目中遇到需要从数组中查找数据,但是算法很多,于是根据项目需求 ... -
Iterate over rows and cells(EXCEL文件的读取)
2013-09-13 14:13 4098package cn.com.songjy.test.exce ... -
jdk1.5的Exchanger同步工具
2013-08-27 14:04 703package cn.com.songjy.test.sock ... -
jdk1.5的CountDownLatch同步工具
2013-08-27 13:37 813package cn.com.songjy.test.sock ... -
jdk1.5的Semaphere同步工具
2013-08-23 14:20 1094package cn.com.songjy.test.so ... -
jdk1.5条件阻塞Condition的应用
2013-08-23 09:42 1366package cn.com.songjy.test.sock ... -
jdk1.5读写锁技术的妙用
2013-08-19 22:00 1393/** * ReadWriteLockTest.java ... -
jdk1.5的线程锁技术
2013-08-19 20:25 963/** * LockTest.java * cn.co ... -
Callable与Future的应用
2013-08-19 20:03 1070/** * CallableAndFuture.java ...
相关推荐
SAX解析XML文件的实例。一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml...
**SAX解析XML的基本原理:** SAX解析器以流式的方式读取XML文档,当遇到文档的各个元素时,会触发相应的事件,如开始文档、开始元素、结束元素、字符数据等。程序员通过实现SAX解析器的回调接口来处理这些事件,从而...
本示例将详细解释如何在Java中使用SAX解析XML文档,并通过注释进行详细说明。 首先,我们需要引入SAX解析器的依赖库,通常这可以通过在项目构建配置中添加JAXB或Xerces实现来实现。 ```java // 引入必要的库,如...
本主题将深入探讨如何在Servlet中利用SAX解析XML文档。 首先,我们需要了解SAX解析的基本原理。SAX解析器不创建整个XML文档树,而是当遇到XML文档的各个部分(如元素、属性、文本等)时,触发相应的事件回调函数。...
本文将深入探讨如何使用SAX解析XML并获取元素的值或内容。 首先,SAX解析器以流式方式读取XML文档,当遇到文档的不同部分时,会触发相应的事件,如开始文档、开始元素、结束元素等。开发者可以注册事件处理器来响应...
以下是一个使用SAX解析XML文件的基本步骤: 1. **创建解析器**: 首先,我们需要创建一个SAX解析器实例。在Java中,这通常通过`SAXParserFactory`类完成。设置解析器属性,然后调用`newSAXParser()`方法获取`...
总的来说,SAX解析XML是一种高效且灵活的方法,适用于处理大型XML文档。通过自定义事件处理器,我们可以根据业务需求定制解析逻辑,从而有效地解析和利用XML数据。在实际项目中,结合源码分析和工具使用,如IDE中的...
Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有...
下面我们将深入探讨SAX解析XML的相关知识点。 1. **SAX解析器的初始化**:在Java中,我们通常使用`org.xml.sax.parsers.SAXParserFactory`类来创建并配置SAX解析器。首先,我们需要实例化一个SAXParserFactory对象...
下面是一个SAX解析XML的示例(有点长,因为详细注解了SAX事件处理的所有方法),SAX API中主要有四种处理事件的接口,它们分别是ContentHandler,DTDHandler, EntityResolver 和 ErrorHandler 。下面的例子可能...
在本项目中,"saxloadxml"应该是实现了一个SAX解析XML文件的示例,旨在帮助开发者理解和应用SAX解析。 首先,我们需要理解SAX解析的基本原理。当解析器读取XML文件时,它会触发一系列的事件,如开始文档、结束文档...
**SAX解析XML详解** XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和Web服务等领域。SAX(Simple API for XML)是XML解析的一种方式,它采用事件驱动模型,以流式处理...
标题“sax解析xml本地读取xml”指的是使用SAX解析器来读取和解析存储在本地文件系统中的XML文件。这种方式适用于处理那些无法一次性加载到内存中的大型XML文档,或者对于内存有限的环境。 SAX解析的基本工作原理...
这个"Project1231_001_XML_SAX"可能包含了一个简单的XML文件和对应的SAX解析示例代码,通过运行这个项目,开发者可以了解如何在实际应用中使用SAX解析XML数据,以及如何处理XML文档中的不同结构。学习和理解SAX解析...
本篇主要探讨的是SAX解析XML的源码实现。 SAX解析器是一种事件驱动的解析器,它不会一次性加载整个XML文档到内存,而是逐行读取,当遇到XML文档中的元素、属性、文本等时,会触发相应的回调函数。这种方式非常适合...
本实例将通过SAX解析XML,帮助我们更好地理解和应用这一技术。 在SAX解析XML的过程中,主要涉及以下几个关键知识点: 1. **事件驱动模型**:SAX解析器在读取XML文档时,遇到每个元素、属性或文本节点时都会触发...
- `xmlSAXPaserDemo`可能是一个包含示例代码的Android项目,用于演示如何实际使用SAX解析XML文件。 - 项目中可能包括网络请求模块、SAX解析器处理类以及展示解析结果的UI部分。 通过以上步骤,开发者可以在...
下面将详细介绍SAX解析XML文件的基本原理、工作流程以及在Android环境下如何实现。 **SAX解析的基本原理:** SAX解析器在读取XML文档时会触发一系列的事件,如开始文档、结束文档、开始元素、结束元素、字符数据等...