﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-小码哥-文章分类-python</title><link>http://www.blogjava.net/canvas/category/38230.html</link><description>谁谓河广，一苇杭之</description><language>zh-cn</language><lastBuildDate>Fri, 24 Feb 2012 21:50:04 GMT</lastBuildDate><pubDate>Fri, 24 Feb 2012 21:50:04 GMT</pubDate><ttl>60</ttl><item><title>openlayers小结(有参考项目代码)</title><link>http://www.blogjava.net/canvas/articles/how_to_do_with_openlayers.html</link><dc:creator>Barrie</dc:creator><author>Barrie</author><pubDate>Mon, 11 Oct 2010 12:42:00 GMT</pubDate><guid>http://www.blogjava.net/canvas/articles/how_to_do_with_openlayers.html</guid><wfw:comment>http://www.blogjava.net/canvas/comments/333731.html</wfw:comment><comments>http://www.blogjava.net/canvas/articles/how_to_do_with_openlayers.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.blogjava.net/canvas/comments/commentRss/333731.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/canvas/services/trackbacks/333731.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最近一段时间里，又做了一个跟openlayers相关的项目，但是到目前为止，我对openlayers还是不怎么了解，做东西也只是参考了openlayers的例子，以及自己的一些对openlayers用法的一些猜测。openlayers是一个用js实现的GIS前端框架，我的js目前还是打酱油的水平，要是没有jquery，那就基本写不了几行js代码了。js那是相当的强大，再加上VML\SVG、HTML...&nbsp;&nbsp;<a href='http://www.blogjava.net/canvas/articles/how_to_do_with_openlayers.html'>阅读全文</a><img src ="http://www.blogjava.net/canvas/aggbug/333731.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/canvas/" target="_blank">Barrie</a> 2010-10-11 20:42 <a href="http://www.blogjava.net/canvas/articles/how_to_do_with_openlayers.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用飞信(libfetion)定时发天气预报</title><link>http://www.blogjava.net/canvas/articles/libfetion.html</link><dc:creator>Barrie</dc:creator><author>Barrie</author><pubDate>Mon, 23 Nov 2009 06:56:00 GMT</pubDate><guid>http://www.blogjava.net/canvas/articles/libfetion.html</guid><wfw:comment>http://www.blogjava.net/canvas/comments/303341.html</wfw:comment><comments>http://www.blogjava.net/canvas/articles/libfetion.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/canvas/comments/commentRss/303341.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/canvas/services/trackbacks/303341.html</trackback:ping><description><![CDATA[什么是libfetion？请访问http://www.libfetion.cn/查看<br />
<br />
以下都是在ubuntu下进行的<br />
参考<br />
http://www.libfetion.cn/Docs-dve/Build-LibFx-on-ubuntu.txt<br />
<br />
请使用svn客户端下载libfetion-gui的源码<br />
http://libfetion-gui.googlecode.com/svn/<br />
<br />
安装开发过程中需要的软件<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #000000;">sudo&nbsp;apt</span><span style="color: #000000;">-</span><span style="color: #000000;">get&nbsp;install&nbsp;libc</span><span style="color: #000000;">-</span><span style="color: #000000;">dev<br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;">sudo&nbsp;apt</span><span style="color: #000000;">-</span><span style="color: #000000;">get&nbsp;install&nbsp;g</span><span style="color: #000000;">++</span><span style="color: #000000;">&nbsp;<br />
</span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">sudo&nbsp;apt</span><span style="color: #000000;">-</span><span style="color: #000000;">get&nbsp;install&nbsp;libcurl4</span><span style="color: #000000;">-</span><span style="color: #000000;">openssl</span><span style="color: #000000;">-</span><span style="color: #000000;">dev</span></div>
<br />
在trunk/qt4_src/libfetion/lib目录下找到静态库libfetion_32.a，由于代码打算是用python来写，所以制作了一个动态库libfetion.so<br />
具体步骤如下：<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000;">#</span><span style="color: #008000;">解压静态库为*.o</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">ar&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">x&nbsp;libfetion_32.a<br />
<br />
</span><span style="color: #008000;">#</span><span style="color: #008000;">重新封装为so</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">g</span><span style="color: #000000;">++</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">shared&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">Wall&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">fPIC&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">lcurl&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">pthread&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">.o&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">o&nbsp;libfetion.so<br />
<br />
</span><span style="color: #008000;">#</span><span style="color: #008000;">查看so[可选步骤]</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">nm&nbsp;libfetion.so <br />
</span></div>
<br />
<br />
发送天气预报的python代码如下，libfetion.so中具体的方法请查看trunk/qt4_src/libfetion/include/libfetion/libfetion.h<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;&nbsp;1</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">!/usr/bin/env&nbsp;python</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;&nbsp;2</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">coding=utf-8</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">only&nbsp;can&nbsp;run&nbsp;at&nbsp;linux</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;os<br />
</span><span style="color: #008080;">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;ctypes<br />
</span><span style="color: #008080;">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;urllib2<br />
</span><span style="color: #008080;">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">城市代码列表</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;&nbsp;9</span>&nbsp;<span style="color: #000000;">city_codes&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">合肥</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">CHXX0448</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br />
</span><span style="color: #008080;">&nbsp;11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">安庆</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">CHXX0452</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br />
</span><span style="color: #008080;">&nbsp;12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">天津</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">CHXX0133</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br />
</span><span style="color: #008080;">&nbsp;13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">南昌</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">CHXX0097</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br />
</span><span style="color: #008080;">&nbsp;14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">上海</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">CHXX0097</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br />
</span><span style="color: #008080;">&nbsp;15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">北京</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">CHXX0097</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br />
</span><span style="color: #008080;">&nbsp;16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">长沙</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">CHXX0013</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br />
</span><span style="color: #008080;">&nbsp;17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">常德</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">CHXX0416</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br />
</span><span style="color: #008080;">&nbsp;18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">北京</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">CHXX0008</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br />
</span><span style="color: #008080;">&nbsp;19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">银川</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">CHXX0259</span><span style="color: #800000;">'</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">&nbsp;21</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;22</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">用户定制城市</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;23</span>&nbsp;<span style="color: #000000;">weather_users&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">天津</span><span style="color: #800000;">'</span><span style="color: #000000;">:[</span><span style="color: #800000;">'</span><span style="color: #800000;">138*******3</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">159*******7</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">159*******2</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">150*******6</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">135*******1</span><span style="color: #800000;">'</span><span style="color: #000000;">],<br />
</span><span style="color: #008080;">&nbsp;25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">北京</span><span style="color: #800000;">'</span><span style="color: #000000;">:[</span><span style="color: #800000;">'</span><span style="color: #800000;">159*******2</span><span style="color: #800000;">'</span><span style="color: #000000;">],<br />
</span><span style="color: #008080;">&nbsp;26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">银川</span><span style="color: #800000;">'</span><span style="color: #000000;">:[</span><span style="color: #800000;">'</span><span style="color: #800000;">159*******2</span><span style="color: #800000;">'</span><span style="color: #000000;">]<br />
</span><span style="color: #008080;">&nbsp;27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">&nbsp;28</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;29</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">自己手机</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;30</span>&nbsp;<span style="color: #000000;">myself_city_list&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;[</span><span style="color: #800000;">'</span><span style="color: #800000;">天津</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">安庆</span><span style="color: #800000;">'</span><span style="color: #000000;">]<br />
</span><span style="color: #008080;">&nbsp;31</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;32</span>&nbsp;<span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;weather:<br />
</span><span style="color: #008080;">&nbsp;33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;weatherBaseUrl&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">http://www.thinkpage.cn/weather/weather.aspx?uid=&amp;l=zh-CN&amp;p=CMA&amp;a=0&amp;u=C&amp;s=4&amp;m=0&amp;x=1&amp;d=2&amp;fc=&amp;bgc=&amp;bc=&amp;ti=1&amp;in=1&amp;li=2&amp;c=</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">初始化</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__init__</span><span style="color: #000000;">(self):<br />
</span><span style="color: #008080;">&nbsp;36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">pass</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;38</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">清空html</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;clear_html(self):<br />
</span><span style="color: #008080;">&nbsp;40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">rm&nbsp;-f&nbsp;*.htm</span><span style="color: #800000;">'</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;41</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.popen(cmd)<br />
</span><span style="color: #008080;">&nbsp;42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;43</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">获得需要发送的城市代码</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__getCityToSend</span><span style="color: #000000;">(self):<br />
</span><span style="color: #008080;">&nbsp;45</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.city_all&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;{}<br />
</span><span style="color: #008080;">&nbsp;46</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;key&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;weather_users.keys():<br />
</span><span style="color: #008080;">&nbsp;47</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.city_all[key]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;48</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;key&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;myself_city_list:<br />
</span><span style="color: #008080;">&nbsp;49</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.city_all[key]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;50</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;51</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">获取html</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;52</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;get_html(self):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;53</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.</span><span style="color: #800080;">__getCityToSend</span><span style="color: #000000;">();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;54</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;key&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;self.city_all.keys():<br />
</span><span style="color: #008080;">&nbsp;55</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;weatherUrl&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;self.weatherBaseUrl&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;city_codes[key]<br />
</span><span style="color: #008080;">&nbsp;56</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;req&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;urllib2.Request(weatherUrl)<br />
</span><span style="color: #008080;">&nbsp;57</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;urllib2.urlopen(req)<br />
</span><span style="color: #008080;">&nbsp;58</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;weather_content&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;res.read()<br />
</span><span style="color: #008080;">&nbsp;59</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res.close()<br />
</span><span style="color: #008080;">&nbsp;60</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_html&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;open(city_codes[key]&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">.htm</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">w</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br />
</span><span style="color: #008080;">&nbsp;61</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_html.write(weather_content)<br />
</span><span style="color: #008080;">&nbsp;62</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_html.close()<br />
</span><span style="color: #008080;">&nbsp;63</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;64</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">过滤无用信息</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;65</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;parse_html(self):<br />
</span><span style="color: #008080;">&nbsp;66</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;key&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;self.city_all.keys():<br />
</span><span style="color: #008080;">&nbsp;67</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_name&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;city_codes[key]&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">.htm</span><span style="color: #800000;">'</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;68</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;69</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">获得信息所在行</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;70</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">cat&nbsp;%s.htm&nbsp;|grep&nbsp;-E&nbsp;\</span><span style="color: #800000;">'</span><span style="color: #000000;">ltl</span><span style="color: #000000;">|</span><span style="color: #000000;">forecastDay</span><span style="color: #000000;">|</span><span style="color: #000000;">temp\</span><span style="color: #800000;">'</span><span style="color: #800000;">|grep&nbsp;-v&nbsp;spanDate&nbsp;&gt;&nbsp;%s.htm</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;(city_codes[key],city_codes[key])<br />
</span><span style="color: #008080;">&nbsp;71</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.popen(cmd)<br />
</span><span style="color: #008080;">&nbsp;72</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;73</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">去掉html代码</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;74</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">sed&nbsp;-i&nbsp;-e&nbsp;\</span><span style="color: #800000;">'</span><span style="color: #000000;">s</span><span style="color: #000000;">/&lt;</span><span style="color: #000000;">[</span><span style="color: #000000;">^&gt;</span><span style="color: #000000;">]</span><span style="color: #000000;">*&gt;//</span><span style="color: #000000;">g\</span><span style="color: #800000;">'</span><span style="color: #800000;">&nbsp;%s.htm</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;city_codes[key]<br />
</span><span style="color: #008080;">&nbsp;75</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.popen(cmd)<br />
</span><span style="color: #008080;">&nbsp;76</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;77</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">去掉不相关字符</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;78</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">sed&nbsp;-i&nbsp;-e&nbsp;\</span><span style="color: #800000;">'</span><span style="color: #000000;">s</span><span style="color: #000000;">/&amp;</span><span style="color: #000000;">deg;</span><span style="color: #000000;">/</span><span style="color: #000000;">&#176;</span><span style="color: #000000;">/</span><span style="color: #000000;">g;s</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">//</span><span style="color: #000000;">g\</span><span style="color: #800000;">'</span><span style="color: #800000;">&nbsp;%s.htm</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;city_codes[key]<br />
</span><span style="color: #008080;">&nbsp;79</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.popen(cmd)<br />
</span><span style="color: #008080;">&nbsp;80</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;81</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">根据城市生成消息</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;82</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__generate_msg</span><span style="color: #000000;">(self,city_key):<br />
</span><span style="color: #008080;">&nbsp;83</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">打开文件</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;84</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_html&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;open(city_codes[city_key]&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">.htm</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br />
</span><span style="color: #008080;">&nbsp;85</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;86</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">读取信息</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;87</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;weather_lines&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;file_html.readlines()<br />
</span><span style="color: #008080;">&nbsp;88</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_html.close()<br />
</span><span style="color: #008080;">&nbsp;89</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;weather_content&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">''</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;90</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;line&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;weather_lines:<br />
</span><span style="color: #008080;">&nbsp;91</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;weather_content&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;weather_content&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;line.replace(</span><span style="color: #800000;">'</span><span style="color: #800000;">\r\n</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br />
</span><span style="color: #008080;">&nbsp;92</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;weather_content<br />
</span><span style="color: #008080;">&nbsp;93</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;94</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">登录飞信&nbsp;&nbsp;</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;95</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;fetion_login(self,&nbsp;your_mobile_no,&nbsp;your_pwd):<br />
</span><span style="color: #008080;">&nbsp;96</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.libc&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;ctypes.cdll.LoadLibrary(</span><span style="color: #800000;">'</span><span style="color: #800000;">/home/loh/weather/libfetion.so</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br />
</span><span style="color: #008080;">&nbsp;97</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.libc.fx_init()<br />
</span><span style="color: #008080;">&nbsp;98</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.libc.fs_login(your_mobile_no,your_pwd)<br />
</span><span style="color: #008080;">&nbsp;99</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.libc.fx_set_longsms(True)<br />
</span><span style="color: #008080;">100</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">101</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">退出飞信&nbsp;&nbsp;</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">102</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;fetion_logout(self):<br />
</span><span style="color: #008080;">103</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.libc.fx_loginout()<br />
</span><span style="color: #008080;">104</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.libc.fx_terminate()<br />
</span><span style="color: #008080;">105</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">106</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">给自己发信息</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">107</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;send_msg_to_myself(self):<br />
</span><span style="color: #008080;">108</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;city_key&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;myself_city_list:<br />
</span><span style="color: #008080;">109</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;self.</span><span style="color: #800080;">__generate_msg</span><span style="color: #000000;">(city_key)<br />
</span><span style="color: #008080;">110</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.libc.fs_send_sms_to_self(msg)<br />
</span><span style="color: #008080;">111</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">112</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">给用户发信息&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">113</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;send_msg(self):<br />
</span><span style="color: #008080;">114</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;city_key&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;weather_users.keys():<br />
</span><span style="color: #008080;">115</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;self.</span><span style="color: #800080;">__generate_msg</span><span style="color: #000000;">(city_key)<br />
</span><span style="color: #008080;">116</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;user&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;weather_users[city_key]:<br />
</span><span style="color: #008080;">117</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.libc.fs_send_sms_by_mobile_no(user,msg)<br />
</span><span style="color: #008080;">118</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">119</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">给用户发送欢迎信息</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">120</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;send_welcome_msg(self,&nbsp;msg):<br />
</span><span style="color: #008080;">121</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user_all&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;{}<br />
</span><span style="color: #008080;">122</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;user_list&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;weather_users.values():<br />
</span><span style="color: #008080;">123</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;user&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;user_list:<br />
</span><span style="color: #008080;">124</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user_all[user]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">125</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">126</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;user&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;user_all.keys():<br />
</span><span style="color: #008080;">127</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.libc.fs_send_sms_by_mobile_no(user,msg)<br />
</span><span style="color: #008080;">128</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">129</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">130</span>&nbsp;<span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__name__</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">__main__</span><span style="color: #800000;">'</span><span style="color: #000000;">:<br />
</span><span style="color: #008080;">131</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;weather&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;weather()<br />
</span><span style="color: #008080;">132</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;weather.get_html()<br />
</span><span style="color: #008080;">133</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;weather.parse_html()<br />
</span><span style="color: #008080;">134</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;weather.fetion_login(</span><span style="color: #800000;">'</span><span style="color: #800000;">136*******3</span><span style="color: #800000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">password</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br />
</span><span style="color: #008080;">135</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;weather.send_msg_to_myself()<br />
</span><span style="color: #008080;">136</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;weather.send_msg()<br />
</span><span style="color: #008080;">137</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">weather.send_welcome_msg('您好！天气预报全线升级，支持国内所有城市以及国外主要大城市，此外您还可以定制多个城市')</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">138</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;weather.fetion_logout()<br />
</span><span style="color: #008080;">139</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;weather.clear_html()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
</span></div>
<br />
<br />
编写脚本和任务计划<br />
编写脚本：<br />
vim weather<br />
写入以下内容<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #000000;">cd&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">home</span><span style="color: #000000;">/</span><span style="color: #000000;">loh</span><span style="color: #000000;">/</span><span style="color: #000000;">weather</span><span style="color: #008000;">#</span><span style="color: #008000;">你的脚本所在目录</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;">python&nbsp;weather.py<br />
</span></div>
chmod +x weather<br />
<br />
任务计划：<br />
crontab -e<br />
写入以下内容（每天早上7点1分执行脚本）<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;m&nbsp;h&nbsp;&nbsp;dom&nbsp;mon&nbsp;dow&nbsp;&nbsp;&nbsp;command</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #000000;">7</span><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">home</span><span style="color: #000000;">/</span><span style="color: #000000;">loh</span><span style="color: #000000;">/</span><span style="color: #000000;">weather</span><span style="color: #000000;">/</span><span style="color: #000000;">weather<br />
</span></div>
<br />
天气预报内容是这样的：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">天津&nbsp;阴&nbsp;9.3&#176;C&nbsp;感觉8&#176;C&nbsp;风力南1级&nbsp;湿度60%&nbsp;今天晴转雾&nbsp;9/2&#176;C&nbsp;明天雾转多云&nbsp;9/0&#176;C</span></div>
<br />
<br />
<img src ="http://www.blogjava.net/canvas/aggbug/303341.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/canvas/" target="_blank">Barrie</a> 2009-11-23 14:56 <a href="http://www.blogjava.net/canvas/articles/libfetion.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Openlayers搭一个E校园(e-campus),类似e都市，6d校园</title><link>http://www.blogjava.net/canvas/articles/e-campus.html</link><dc:creator>Barrie</dc:creator><author>Barrie</author><pubDate>Fri, 10 Jul 2009 16:57:00 GMT</pubDate><guid>http://www.blogjava.net/canvas/articles/e-campus.html</guid><wfw:comment>http://www.blogjava.net/canvas/comments/286308.html</wfw:comment><comments>http://www.blogjava.net/canvas/articles/e-campus.html#Feedback</comments><slash:comments>17</slash:comments><wfw:commentRss>http://www.blogjava.net/canvas/comments/commentRss/286308.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/canvas/services/trackbacks/286308.html</trackback:ping><description><![CDATA[最近为学校搭建了一个校园电子地图，做得不怎么好，只能凑合着用了。<br />
快回家了，做点记录，欢迎拍砖指正。<br />
新生应该可以在录取通知书里看到这个地图的链接了^_^<br />
刚开始做这个地图的时候，打算使用geoserver等专业的东西，时间太紧了，对GIS一点了解都没有，所以就放弃了。看到了6D校园和e都市的实现方案，找了一找，发现了mapeasy这个js库，于是把6D校园的地图图片下载下来了，自己试着用mapeasy实现了一下，效果很好，但是总感觉不对劲，像6D校园和e都市都是使用html map area来标注地图信息的，这样就与真正的地理信息系统差远了，不好快速的添加信息或者做路径搜索了，于是又不是很满意。在使用geoserver的时候，注意到它显示地图信息使用了openlayers，于是简单看了一下openlayers的例子，感觉很强大，也比较符合我的想法。<br />
openlayers可以直接使用图片做地图的来源，然后直接编辑地图，添加地图的地理信息，包括点，线，多边形区域，这样就很容易做路径搜索，也很快速容易添加地图的地理信息了。<br />
看到openlayers可以使用tilecache做地图的图片来源，我就搭建了tilecache服务器，这个tilecache是用python写的，很容易配置。我仔细看了一下tilecache的配置，发现这个完全可以直接使用图片就可以，只是把切好的图片按照titlecache的目录结构放置好，就行了。于是简单的修改了一下openlayers的tilecache接口，就基本实现了电子地图。地图原图是一个面积很大图片，我用PIL库，使用python写了一个简单的切图程序，把地图按照横纵坐标切成了256X256大小的图片，并且按照自己定制tilecache的目录结构存好图片，最后把这些图片放在apache http服务器下，使用openlayers直接读取即可。<br />
最后实现的功能有：地图浏览，地图缩略展示，地面建筑标记，地面建筑提示，路线标记，快速定位，后台添加信息等(路径搜索暂未实现)<br />
其中后台可以直接画出建筑的多边形、路线、点标记，然后添加信息<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/canvas/sshot-4.GIF" alt="" border="0" /><br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/canvas/2.GIF" alt="" border="0" /><br />
<br />
后台管理页面如下：<br />
<img src="http://www.blogjava.net/images/blogjava_net/canvas/3.GIF" alt="" border="0" /><br />
<img src ="http://www.blogjava.net/canvas/aggbug/286308.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/canvas/" target="_blank">Barrie</a> 2009-07-11 00:57 <a href="http://www.blogjava.net/canvas/articles/e-campus.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>appengine支持Java了</title><link>http://www.blogjava.net/canvas/articles/AppEngineJavaOverview.html</link><dc:creator>Barrie</dc:creator><author>Barrie</author><pubDate>Wed, 08 Apr 2009 06:40:00 GMT</pubDate><guid>http://www.blogjava.net/canvas/articles/AppEngineJavaOverview.html</guid><wfw:comment>http://www.blogjava.net/canvas/comments/264452.html</wfw:comment><comments>http://www.blogjava.net/canvas/articles/AppEngineJavaOverview.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/canvas/comments/commentRss/264452.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/canvas/services/trackbacks/264452.html</trackback:ping><description><![CDATA[刚刚登录appengine的时候才发现开始支持java了。<br />
上午的时候还没有。<br />
<br />
对java的比较熟悉，但是还是喜欢比较简洁的python<br />
<br />
<a href="http://code.google.com/intl/zh-CN/appengine/docs/java/overview.html">http://code.google.com/intl/zh-CN/appengine/docs/java/overview.html</a><br />
<br />
<a href="http://googleappengine.blogspot.com/2009/04/seriously-this-time-new-language-on-app.html">http://googleappengine.blogspot.com/2009/04/seriously-this-time-new-language-on-app.html</a><br />
<br />
这是注册试用后google appengine给发的邮件:<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">Hello</span><span style="color: #000000;">,</span><span style="color: #000000;"><br />
<br />
Thanks&nbsp;for&nbsp;signing&nbsp;up&nbsp;to&nbsp;try&nbsp;Google&nbsp;App&nbsp;Engine&nbsp;for&nbsp;Java!&nbsp;&nbsp;Your&nbsp;account&nbsp;has&nbsp;now<br />
been&nbsp;activated</span><span style="color: #000000;">,</span><span style="color: #000000;">&nbsp;so&nbsp;you&nbsp;can&nbsp;begin&nbsp;building&nbsp;applications&nbsp;with&nbsp;our&nbsp;new&nbsp;Java<br />
runtime.<br />
<br />
Please&nbsp;note&nbsp;that&nbsp;this&nbsp;is&nbsp;still&nbsp;an&nbsp;early&nbsp;look&nbsp;at&nbsp;our&nbsp;support&nbsp;for&nbsp;the&nbsp;Java<br />
language&nbsp;and&nbsp;you&nbsp;may&nbsp;encounter&nbsp;issues&nbsp;during&nbsp;development.&nbsp;We&nbsp;look&nbsp;forward&nbsp;to<br />
hearing&nbsp;your&nbsp;feedback!&nbsp;To&nbsp;learn&nbsp;more</span><span style="color: #000000;">,</span><span style="color: #000000;">&nbsp;please&nbsp;visit:<br />
<br />
http://code.google.com/appengine/docs/java/overview.html<br />
<br />
To&nbsp;start&nbsp;creating&nbsp;applications&nbsp;with&nbsp;Google&nbsp;App&nbsp;Engine</span><span style="color: #000000;">,</span><span style="color: #000000;">&nbsp;simply&nbsp;follow&nbsp;this&nbsp;link<br />
(you&nbsp;may&nbsp;need&nbsp;to&nbsp;sign&nbsp;in&nbsp;with&nbsp;your&nbsp;burgundy.loh@gmail.com&nbsp;Google&nbsp;Account)&nbsp;and<br />
verify&nbsp;your&nbsp;account&nbsp;with&nbsp;a&nbsp;mobile&nbsp;phone&nbsp;number&nbsp;if&nbsp;you&nbsp;have&nbsp;not&nbsp;already&nbsp;done&nbsp;so:<br />
<br />
http://appengine.google.com/<br />
<br />
If&nbsp;you&nbsp;are&nbsp;having&nbsp;trouble&nbsp;verifying&nbsp;your&nbsp;account&nbsp;via&nbsp;SMS&nbsp;please&nbsp;fill<br />
out&nbsp;the&nbsp;following&nbsp;form&nbsp;and&nbsp;your&nbsp;account&nbsp;will&nbsp;be&nbsp;reviewed&nbsp;and&nbsp;enabled<br />
as&nbsp;soon&nbsp;as&nbsp;possible:<br />
<br />
http://appengine.google.com/waitlist/sms_issues<br />
<br />
Thanks!<br />
The&nbsp;Google&nbsp;App&nbsp;Engine&nbsp;Team<br />
<br />
Java&nbsp;is&nbsp;a&nbsp;registered&nbsp;trademark&nbsp;of&nbsp;Sun&nbsp;Microsystems</span><span style="color: #000000;">,</span><span style="color: #000000;">&nbsp;Inc.</span></div>
<br />
<br />
<br />
<img src ="http://www.blogjava.net/canvas/aggbug/264452.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/canvas/" target="_blank">Barrie</a> 2009-04-08 14:40 <a href="http://www.blogjava.net/canvas/articles/AppEngineJavaOverview.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初识python</title><link>http://www.blogjava.net/canvas/articles/python-start.html</link><dc:creator>Barrie</dc:creator><author>Barrie</author><pubDate>Wed, 25 Mar 2009 01:02:00 GMT</pubDate><guid>http://www.blogjava.net/canvas/articles/python-start.html</guid><wfw:comment>http://www.blogjava.net/canvas/comments/261779.html</wfw:comment><comments>http://www.blogjava.net/canvas/articles/python-start.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/canvas/comments/commentRss/261779.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/canvas/services/trackbacks/261779.html</trackback:ping><description><![CDATA[以教程中的一段小诗开始：<br />
Programming is fun<br />
When the work is done<br />
if you wanna make your work also fun:<br />
&nbsp;&nbsp;&nbsp; use Python!<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">!/usr/bin/env&nbsp;python</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">coding=utf-8</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">poem&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'''</span><span style="color: #800000;">\<br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #800000;">Programming&nbsp;is&nbsp;fun<br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #800000;">When&nbsp;the&nbsp;work&nbsp;is&nbsp;done<br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #800000;">if&nbsp;you&nbsp;wanna&nbsp;make&nbsp;your&nbsp;work&nbsp;also&nbsp;fun:<br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #800000;">&nbsp;&nbsp;&nbsp;&nbsp;use&nbsp;Python!<br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #800000;">'''</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">f&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;file(</span><span style="color: #800000;">'</span><span style="color: #800000;">c:\\poem.txt</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">w</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">f.write(poem)<br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">f.close()</span></div>
<br />
哇，下面这段真是解释性的脚本语言的魅力啊，动态生成语句，然后直接解释执行，太灵活了<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">!/usr/bin/env&nbsp;python</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">coding=utf-8</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">stm&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">a&nbsp;=&nbsp;10</span><span style="color: #800000;">'</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">4</span>&nbsp;<span style="color: #0000ff;">exec</span><span style="color: #000000;">(stm)<br />
</span><span style="color: #008080;">5</span>&nbsp;<span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;a</span></div>
<br />
直接输出了a的值10<br />
<br />
还有，更厉害的是可以给对象动态的添加属性，不知道这么理解对不对<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">!/usr/bin/env&nbsp;python</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">coding=utf-8</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Person:<br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__init__</span><span style="color: #000000;">(self,&nbsp;tel,&nbsp;mobile,&nbsp;email,&nbsp;address,&nbsp;</span><span style="color: #000000;">**</span><span style="color: #000000;">elseInfo):<br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.tel&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;tel<br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.mobile&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;mobile<br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.email&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;email<br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.address&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;address<br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;key,&nbsp;value&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;elseInfo.items():<br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stm&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">self.%s&nbsp;=&nbsp;\</span><span style="color: #800000;">"</span><span style="color: #000000;">%</span><span style="color: #000000;">s\</span><span style="color: #800000;">""</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;(key,&nbsp;value)<br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">exec</span><span style="color: #000000;">(stm)<br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">loh&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Person(</span><span style="color: #800000;">'</span><span style="color: #800000;">2*******3</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">1368****533</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">elgnaw(at)tju.edu.cn</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">Tianjin&nbsp;University</span><span style="color: #800000;">'</span><span style="color: #000000;">,email2&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">burgundy.loh(at)gmail.com</span><span style="color: #800000;">'</span><span style="color: #000000;">,mobile2&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">136*****211</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br />
</span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">16</span>&nbsp;<span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;loh.email<br />
</span><span style="color: #008080;">17</span>&nbsp;<span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;loh.email2<br />
</span><span style="color: #008080;">18</span>&nbsp;<span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;dir(loh)<br />
</span><span style="color: #008080;">19</span>&nbsp;</div>
<br />
输出为<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">elgnaw(at)tju.edu.cn<br />
burgundy.loh(at)gmail.com<br />
</span><span style="color: #800000; font-weight: bold;">[</span><span style="color: #800000;">'__doc__',&nbsp;'__init__',&nbsp;'__module__',&nbsp;'address',&nbsp;'email',&nbsp;'email2',&nbsp;'mobile',&nbsp;'mobile2',&nbsp;'tel'</span><span style="color: #800000; font-weight: bold;">]</span></div>
<br />
这里是python的教程：<a href="http://www.kuqin.com/abyteofpython_cn/index.html" target="_blank">简明 Python 教程</a><br />
也开始你的python之路吧<br />

<img src ="http://www.blogjava.net/canvas/aggbug/261779.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/canvas/" target="_blank">Barrie</a> 2009-03-25 09:02 <a href="http://www.blogjava.net/canvas/articles/python-start.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>中国各城市的经纬度数据(精确到县级城市)</title><link>http://www.blogjava.net/canvas/articles/GS-China.html</link><dc:creator>Barrie</dc:creator><author>Barrie</author><pubDate>Thu, 12 Mar 2009 12:34:00 GMT</pubDate><guid>http://www.blogjava.net/canvas/articles/GS-China.html</guid><wfw:comment>http://www.blogjava.net/canvas/comments/259355.html</wfw:comment><comments>http://www.blogjava.net/canvas/articles/GS-China.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/canvas/comments/commentRss/259355.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/canvas/services/trackbacks/259355.html</trackback:ping><description><![CDATA[经纬度数据收集自
<a href="http://samuel.lamost.org/" target="_blank">维北有斗-天文爱好者的乐园</a><br />
编写这篇博文有几个目的：<br />
首先认识了两个单词<br />
<div style="margin: 0px 0px 5px; color: #808080; line-height: normal;"><span style="font-size: 10.5pt; color: #000000; line-height: normal;"><strong>latitude</strong></span>
&nbsp;<span style="font-size: 10.5pt; line-height: normal; font-family: 'Lingoes Unicode';">[<font color="#009900">lat&#183;i&#183;tude || 'l&#230;tɪtuːd /-tjuːd</font>]</span>
<font color="#c00000">n.</font> &nbsp;纬度; 回旋余地, 自由; 纬度地区</div>
<div style="margin: 0px 0px 5px; color: #808080; line-height: normal;">
<span style="font-size: 10.5pt; color: #000000; line-height: normal;"><strong>longitude</strong></span>
&nbsp;<span style="font-size: 10.5pt; line-height: normal; font-family: 'Lingoes Unicode';">[<font color="#009900">lon&#183;gi&#183;tude || 'lɑndʒɪtuːd /'lɒndʒɪtjuːd</font>]</span>
<font color="#c00000">n.</font> &nbsp;经度; 经线</div>
<br />
1.学习dom4j的简单用法<br />
2.做一个方便使用的全国城市经纬度数据库<br />
3.利用google天气api做一个全面的天气预报服务<br />
4.学习用python编写webservice<br />
<br />
内容：<br />
1.学习dom4j的简单用法<br />
收集了的经纬度都是按照城市分开的单独的htm文件，我已经处理过为符合html4.0标准的html文件了，即所有的标识都是成对的，这里可以下载这些文件<a title="经纬度html包" href="/Files/canvas/jwd.zip">(点击下载经纬度html包)</a><br />
(1)如何使用dom4j读入xml文档<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><img id="Code_Closed_Image_174506" onclick="this.style.display='none'; Code_Closed_Text_174506.style.display='none'; Code_Open_Image_174506.style.display='inline'; Code_Open_Text_174506.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" alt="" align="top" width="11" height="16" /><img id="Code_Open_Image_174506" style="display: none;" onclick="this.style.display='none'; Code_Open_Text_174506.style.display='none'; Code_Closed_Image_174506.style.display='inline'; Code_Closed_Text_174506.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top" width="11" height="16" /><span id="Code_Closed_Text_174506" style="border: 1px solid #808080; background-color: #ffffff;">使用dom4j读入xml文档代码片段</span><span id="Code_Open_Text_174506" style="display: none;"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #000000;">File&nbsp;file&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;File(</span><span style="color: #000000;">"</span><span style="color: #000000;">G:\\workspace\\test.xml</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;">SAXReader&nbsp;reader&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;SAXReader();<br />
</span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">根据实际情况设置编码</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reader.setEncoding(</span><span style="color: #000000;">"</span><span style="color: #000000;">GBK</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document&nbsp;doc&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;reader.read(files);<br />
</span><span style="color: #008080;">6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">获得xml文档的根节点</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;root&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;doc.getRootElement();</span></span></div>
<br />
(2)如何遍历xml文档的所有结点<br />
这样就读入了这个xml文档，并获得了这个xml文档对象的根结点，由于xml文档是一个树形结构，这样就很容易遍历它所有的结点了。<br />
这里根据自己的需要，测试使用了两种遍历方法，一种是根据树的结构编写递归程序，一种就是直接使用循环，还有都dom4j自带的visitor模式访问也很好用，这里有篇参考文档，可以看看(<a href="http://www.cnblogs.com/eafy/archive/2008/04/11/1148006.html" target="_blank">查看</a>)<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><img id="Code_Closed_Image_200042" onclick="this.style.display='none'; Code_Closed_Text_200042.style.display='none'; Code_Open_Image_200042.style.display='inline'; Code_Open_Text_200042.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" alt="" align="top" width="11" height="16" /><img id="Code_Open_Image_200042" style="display: none;" onclick="this.style.display='none'; Code_Open_Text_200042.style.display='none'; Code_Closed_Image_200042.style.display='inline'; Code_Closed_Text_200042.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top" width="11" height="16" /><span id="Code_Closed_Text_200042" style="border: 1px solid #808080; background-color: #ffffff;">使用递归遍历</span><span id="Code_Open_Text_200042" style="display: none;"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">
<pre><font face="Courier New">
<font color="#0000ff">public  void </font><font color="#000000">visitAll(</font><font color="#ff0000">Element </font><font color="#000000">root, </font><font color="#ff0000">Element </font><font color="#000000">child){</font>
<font color="#008000">// 枚举所有子节点</font>
<font color="#0000ff">for </font><font color="#000000">( </font><font color="#ff0000">Iterator </font><font color="#000000">i = root.elementIterator(); i.hasNext(); ) {</font>
<font color="#ff0000">Element </font><font color="#000000">element = (</font><font color="#ff0000">Element</font><font color="#000000">) i.next();</font>
<font color="#ff0000">System</font><font color="#000000">.out.println(stringTrim(element.getText()));</font>
<font color="#0000ff">if</font><font color="#000000">(</font><font color="#0000ff">this</font><font color="#000000">.stringTrim(element.getTextTrim()).equals(</font><font color="#ff00ff">""</font><font color="#000000">)){</font>
<font color="#0000ff">return</font><font color="#000000">;</font>
<font color="#000000">} </font>
<font color="#0000ff">else </font><font color="#000000">{</font>
<font color="#ff0000">Element </font><font color="#000000">tmp = child.addElement(</font><font color="#ff00ff">"city"</font><font color="#000000">);</font>
<font color="#000000">visitAll(element, tmp);</font>
<font color="#000000">}</font>
<font color="#000000">}</font>
<font color="#000000">}</font>
</font>
</pre>
</span></span></div>
<br />
这里提供的xml文档层数为2，直接循环即可<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><img id="Code_Closed_Image_200134" onclick="this.style.display='none'; Code_Closed_Text_200134.style.display='none'; Code_Open_Image_200134.style.display='inline'; Code_Open_Text_200134.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" alt="" align="top" width="11" height="16" /><img id="Code_Open_Image_200134" style="display: none;" onclick="this.style.display='none'; Code_Open_Text_200134.style.display='none'; Code_Closed_Image_200134.style.display='inline'; Code_Closed_Text_200134.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top" width="11" height="16" /><span id="Code_Closed_Text_200134" style="border: 1px solid #808080; background-color: #ffffff;">直接循环遍历</span><span id="Code_Open_Text_200134" style="display: none;"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">
<pre><font face="Courier New">
<font color="#0000ff">public  void </font><font color="#000000">visitAll(</font><font color="#ff0000">Element </font><font color="#000000">root, </font><font color="#ff0000">Element </font><font color="#000000">child){</font>
<font color="#008000">// 枚举所有子节点</font>
<font color="#0000ff">for </font><font color="#000000">( </font><font color="#ff0000">Iterator </font><font color="#000000">i = root.elementIterator(); i.hasNext(); ) {</font>
<font color="#ff0000">Element </font><font color="#000000">element = (</font><font color="#ff0000">Element</font><font color="#000000">) i.next();      </font>
<font color="#ff0000">Iterator </font><font color="#000000">j = element.elementIterator();</font>
<font color="#ff0000">Element </font><font color="#000000">tmpElement = (</font><font color="#ff0000">Element</font><font color="#000000">)j.next();</font>
<font color="#0000ff">if</font><font color="#000000">(!(stringTrim(tmpElement.getTextTrim()).equals(</font><font color="#ff00ff">"城市名"</font><font color="#000000">)))</font>
<font color="#000000">{</font>
<font color="#ff0000">Element </font><font color="#000000">tmp = child.addElement(</font><font color="#ff00ff">"city"</font><font color="#000000">);</font>
<font color="#000000">tmp.addAttribute(</font><font color="#ff00ff">"name"</font><font color="#000000">, </font>
<font color="#000000">stringTrim(tmpElement.getTextTrim()).trim());</font>
<font color="#000000">tmpElement = (</font><font color="#ff0000">Element</font><font color="#000000">)j.next();</font>
<font color="#000000">tmp.addAttribute(</font><font color="#ff00ff">"longitude"</font><font color="#000000">, </font>
<font color="#000000">stringTrim(tmpElement.getTextTrim()).trim());</font>
<font color="#000000">tmpElement = (</font><font color="#ff0000">Element</font><font color="#000000">)j.next();</font>
<font color="#000000">tmp.addAttribute(</font><font color="#ff00ff">"latitude"</font><font color="#000000">, </font>
<font color="#000000">stringTrim(tmpElement.getTextTrim()).trim());</font>
<font color="#000000">}</font>
<font color="#000000">}</font>
<font color="#000000">}</font>
</font>
</pre>
</span></span></div>
<br />
关于visitor模式的使用，请参看上面给出的参考文档<br />
<br />
(3)创建新的xml文档<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><img id="Code_Closed_Image_195853" onclick="this.style.display='none'; Code_Closed_Text_195853.style.display='none'; Code_Open_Image_195853.style.display='inline'; Code_Open_Text_195853.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" alt="" align="top" width="11" height="16" /><img id="Code_Open_Image_195853" style="display: none;" onclick="this.style.display='none'; Code_Open_Text_195853.style.display='none'; Code_Closed_Image_195853.style.display='inline'; Code_Closed_Text_195853.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top" width="11" height="16" /><span id="Code_Closed_Text_195853" style="border: 1px solid #808080; background-color: #ffffff;">创建xml文档</span><span id="Code_Open_Text_195853" style="display: none;"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">
<pre><font face="Courier New">
<font color="#0000ff">public void </font><font color="#000000">createXMLFile(</font><font color="#ff0000">String </font><font color="#000000">filename) </font><font color="#0000ff">throws </font><font color="#ff0000">Exception</font><font color="#000000">{</font>
<font color="#008000">//使用辅助方法创建文档对象</font>
<font color="#ff0000">Document </font><font color="#000000">res = DocumentHelper.createDocument();</font>
<font color="#008000">//添加文档跟结点country</font>
<font color="#ff0000">Element </font><font color="#000000">rootElement = res.addElement(</font><font color="#ff00ff">"country"</font><font color="#000000">);</font>
<font color="#008000">//给根节点添加属性name，值为"中国"</font>
<font color="#000000">rootElement.addAttribute(</font><font color="#ff00ff">"name"</font><font color="#000000">, </font><font color="#ff00ff">"中国"</font><font color="#000000">);</font>
<font color="#008000">//打开目录</font>
<font color="#ff0000">File </font><font color="#000000">file = </font><font color="#0000ff">new </font><font color="#ff0000">File</font><font color="#000000">(</font><font color="#ff00ff">"G:\\workspace\\jwd\\jwd"</font><font color="#000000">);</font>
<font color="#008000">//打开目录下所有的xml文档</font>
<font color="#ff0000">File</font><font color="#000000">[] files = file.listFiles();</font>
<font color="#008000">//依次操作每个xml文档</font>
<font color="#0000ff">for</font><font color="#000000">(</font><font color="#0000ff">int </font><font color="#000000">i = </font><font color="#800080">0</font><font color="#000000">; i &lt; files.length; i ++){</font>
<font color="#008000">//获取文件名，去掉文件扩展名</font>
<font color="#ff0000">String</font><font color="#000000">[] name = files[i].getName().split(</font><font color="#ff00ff">"\\."</font><font color="#000000">);</font>
<font color="#008000">//在根结点下添加子节点province</font>
<font color="#ff0000">Element </font><font color="#000000">childElement = rootElement.addElement(</font><font color="#ff00ff">"province"</font><font color="#000000">);</font>
<font color="#008000">//添加属性name，值为文件名</font>
<font color="#000000">childElement.addAttribute(</font><font color="#ff00ff">"name"</font><font color="#000000">, name[</font><font color="#800080">0</font><font color="#000000">].trim());</font>
<font color="#008000">//创建reader</font>
<font color="#000000">SAXReader reader = </font><font color="#0000ff">new </font><font color="#000000">SAXReader();</font>
<font color="#008000">//根据实际情况设置编码</font>
<font color="#000000">reader.setEncoding(</font><font color="#ff00ff">"GBK"</font><font color="#000000">);</font>
<font color="#ff0000">Document </font><font color="#000000">doc = reader.read(files[i]);</font>
<font color="#008000">//获得xml文档的根节点</font>
<font color="#ff0000">Element </font><font color="#000000">root = doc.getRootElement();</font>
<font color="#008000">//遍历所有的结点</font>
<font color="#0000ff">this</font><font color="#000000">.visitAll(root, childElement);</font>
<font color="#000000">}</font>
<font color="#008000">//格式化即将输出的xml，让它看起来整齐点</font>
<font color="#000000">OutputFormat format = OutputFormat.createPrettyPrint();</font>
<font color="#008000">/*将document中的内容写入文件中 */</font>
<font color="#000000">XMLWriter writer = </font><font color="#0000ff">new </font><font color="#000000">XMLWriter(</font><font color="#0000ff">new </font><font color="#ff0000">FileWriter</font><font color="#000000">(</font><font color="#0000ff">new </font><font color="#ff0000">File</font><font color="#000000">(filename)),format);</font>
<font color="#000000">writer.write(res);</font>
<font color="#000000">writer.close(); </font>
<font color="#000000">}</font>
</font>
</pre>
</span></span></div>
<br />
整个合并所有html页为一个xml的代码如下<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><img id="Code_Closed_Image_195752" onclick="this.style.display='none'; Code_Closed_Text_195752.style.display='none'; Code_Open_Image_195752.style.display='inline'; Code_Open_Text_195752.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" alt="" align="top" width="11" height="16" /><img id="Code_Open_Image_195752" style="display: none;" onclick="this.style.display='none'; Code_Open_Text_195752.style.display='none'; Code_Closed_Image_195752.style.display='inline'; Code_Closed_Text_195752.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top" width="11" height="16" /><span id="Code_Closed_Text_195752" style="border: 1px solid #808080; background-color: #ffffff;">完整的代码</span><span id="Code_Open_Text_195752" style="display: none;"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">
<pre><font face="Courier New">
<font color="#0000ff">import </font><font color="#000000">java.io.</font><font color="#ff0000">File</font><font color="#000000">;</font>
<font color="#0000ff">import </font><font color="#000000">java.io.</font><font color="#ff0000">FileWriter</font><font color="#000000">;</font>
<font color="#0000ff">import </font><font color="#000000">java.util.</font><font color="#ff0000">Iterator</font><font color="#000000">;</font>
<font color="#0000ff">import </font><font color="#000000">org.dom4j.</font><font color="#ff0000">Document</font><font color="#000000">;</font>
<font color="#0000ff">import </font><font color="#000000">org.dom4j.DocumentHelper;</font>
<font color="#0000ff">import </font><font color="#000000">org.dom4j.</font><font color="#ff0000">Element</font><font color="#000000">;</font>
<font color="#0000ff">import </font><font color="#000000">org.dom4j.io.OutputFormat;</font>
<font color="#0000ff">import </font><font color="#000000">org.dom4j.io.SAXReader;</font>
<font color="#0000ff">import </font><font color="#000000">org.dom4j.io.XMLWriter;</font>
<font color="#008000">/**</font>
<font color="#008000"> * @author canvas</font>
<font color="#008000"> *</font>
<font color="#008000"> */</font>
<font color="#0000ff">public class </font><font color="#000000">GIS {</font>
<font color="#0000ff">public void </font><font color="#000000">createXMLFile(</font><font color="#ff0000">String </font><font color="#000000">filename) </font><font color="#0000ff">throws </font><font color="#ff0000">Exception</font><font color="#000000">{</font>
<font color="#008000">//使用辅助方法创建文档对象</font>
<font color="#ff0000">Document </font><font color="#000000">res = DocumentHelper.createDocument();</font>
<font color="#008000">//添加文档跟结点country</font>
<font color="#ff0000">Element </font><font color="#000000">rootElement = res.addElement(</font><font color="#ff00ff">"country"</font><font color="#000000">);</font>
<font color="#008000">//给根节点添加属性name，值为"中国"</font>
<font color="#000000">rootElement.addAttribute(</font><font color="#ff00ff">"name"</font><font color="#000000">, </font><font color="#ff00ff">"中国"</font><font color="#000000">);</font>
<font color="#008000">//打开目录</font>
<font color="#ff0000">File </font><font color="#000000">file = </font><font color="#0000ff">new </font><font color="#ff0000">File</font><font color="#000000">(</font><font color="#ff00ff">"G:\\workspace\\jwd\\jwd"</font><font color="#000000">);</font>
<font color="#008000">//打开目录下所有的xml文档</font>
<font color="#ff0000">File</font><font color="#000000">[] files = file.listFiles();</font>
<font color="#008000">//依次操作每个xml文档</font>
<font color="#0000ff">for</font><font color="#000000">(</font><font color="#0000ff">int </font><font color="#000000">i = </font><font color="#800080">0</font><font color="#000000">; i &lt; files.length; i ++){</font>
<font color="#008000">//获取文件名，去掉文件扩展名</font>
<font color="#ff0000">String</font><font color="#000000">[] name = files[i].getName().split(</font><font color="#ff00ff">"\\."</font><font color="#000000">);</font>
<font color="#008000">//在根结点下添加子节点province</font>
<font color="#ff0000">Element </font><font color="#000000">childElement = rootElement.addElement(</font><font color="#ff00ff">"province"</font><font color="#000000">);</font>
<font color="#008000">//添加属性name，值为文件名</font>
<font color="#000000">childElement.addAttribute(</font><font color="#ff00ff">"name"</font><font color="#000000">, name[</font><font color="#800080">0</font><font color="#000000">].trim());</font>
<font color="#008000">//创建reader</font>
<font color="#000000">SAXReader reader = </font><font color="#0000ff">new </font><font color="#000000">SAXReader();</font>
<font color="#008000">//根据实际情况设置编码</font>
<font color="#000000">reader.setEncoding(</font><font color="#ff00ff">"GBK"</font><font color="#000000">);</font>
<font color="#ff0000">Document </font><font color="#000000">doc = reader.read(files[i]);</font>
<font color="#008000">//获得xml文档的根节点</font>
<font color="#ff0000">Element </font><font color="#000000">root = doc.getRootElement();</font>
<font color="#008000">//遍历所有的结点</font>
<font color="#0000ff">this</font><font color="#000000">.visitAll(root, childElement);</font>
<font color="#000000">}</font>
<font color="#008000">//格式化即将输出的xml，让它看起来整齐点</font>
<font color="#000000">OutputFormat format = OutputFormat.createPrettyPrint();</font>
<font color="#008000">/*将document中的内容写入文件中 */</font>
<font color="#000000">XMLWriter writer = </font><font color="#0000ff">new </font><font color="#000000">XMLWriter(</font><font color="#0000ff">new </font><font color="#ff0000">FileWriter</font><font color="#000000">(</font><font color="#0000ff">new </font><font color="#ff0000">File</font><font color="#000000">(filename)),format);</font>
<font color="#000000">writer.write(res);</font>
<font color="#000000">writer.close(); </font>
<font color="#000000">}</font>
<font color="#0000ff">public  void </font><font color="#000000">visitAll(</font><font color="#ff0000">Element </font><font color="#000000">root, </font><font color="#ff0000">Element </font><font color="#000000">child){</font>
<font color="#008000">// 枚举所有子节点</font>
<font color="#0000ff">for </font><font color="#000000">( </font><font color="#ff0000">Iterator </font><font color="#000000">i = root.elementIterator(); i.hasNext(); ) {</font>
<font color="#ff0000">Element </font><font color="#000000">element = (</font><font color="#ff0000">Element</font><font color="#000000">) i.next();</font>
<font color="#008000">//System.out.println(stringTrim(element.getText()));</font>
<font color="#008000">/*if(this.stringTrim(element.getTextTrim()).equals("")){</font>
<font color="#008000">               return;</font>
<font color="#008000">           } </font>
<font color="#008000">           else {</font>
<font color="#008000">                Element tmp = child.addElement("city");</font>
<font color="#008000">                visitAll(element, tmp);</font>
<font color="#008000">           }*/</font>
<font color="#ff0000">Iterator </font><font color="#000000">j = element.elementIterator();</font>
<font color="#ff0000">Element </font><font color="#000000">tmpElement = (</font><font color="#ff0000">Element</font><font color="#000000">)j.next();</font>
<font color="#0000ff">if</font><font color="#000000">(!(stringTrim(tmpElement.getTextTrim()).equals(</font><font color="#ff00ff">"城市名"</font><font color="#000000">)))</font>
<font color="#000000">{</font>
<font color="#ff0000">Element </font><font color="#000000">tmp = child.addElement(</font><font color="#ff00ff">"city"</font><font color="#000000">);</font>
<font color="#000000">tmp.addAttribute(</font><font color="#ff00ff">"name"</font><font color="#000000">, </font>
<font color="#000000">stringTrim(tmpElement.getTextTrim()).trim());</font>
<font color="#000000">tmpElement = (</font><font color="#ff0000">Element</font><font color="#000000">)j.next();</font>
<font color="#000000">tmp.addAttribute(</font><font color="#ff00ff">"longitude"</font><font color="#000000">, </font>
<font color="#000000">stringTrim(tmpElement.getTextTrim()).trim());</font>
<font color="#000000">tmpElement = (</font><font color="#ff0000">Element</font><font color="#000000">)j.next();</font>
<font color="#000000">tmp.addAttribute(</font><font color="#ff00ff">"latitude"</font><font color="#000000">, </font>
<font color="#000000">stringTrim(tmpElement.getTextTrim()).trim());</font>
<font color="#000000">}</font>
<font color="#000000">}</font>
<font color="#000000">}</font>
<font color="#0000ff">public </font><font color="#ff0000">String </font><font color="#000000">stringTrim(</font><font color="#ff0000">String </font><font color="#000000">str){</font>
<font color="#008000">//去掉空格和全角空格</font>
<font color="#ff0000">String</font><font color="#000000">[] tmp = str.split(</font><font color="#ff00ff">"\\s| "</font><font color="#000000">);</font>
<font color="#ff0000">StringBuffer </font><font color="#000000">sb = </font><font color="#0000ff">new </font><font color="#ff0000">StringBuffer</font><font color="#000000">();</font>
<font color="#0000ff">for</font><font color="#000000">(</font><font color="#0000ff">int </font><font color="#000000">i = </font><font color="#800080">0</font><font color="#000000">; i &lt; tmp.length; i ++){</font>
<font color="#000000">sb.append(tmp[i].trim());</font>
<font color="#000000">}</font>
<font color="#0000ff">return </font><font color="#000000">sb.toString();</font>
<font color="#000000">}</font>
<font color="#008000">/**</font>
<font color="#008000">     * @param args</font>
<font color="#008000">     */</font>
<font color="#0000ff">public static void </font><font color="#000000">main(</font><font color="#ff0000">String</font><font color="#000000">[] args) {</font>
<font color="#0000ff">try </font><font color="#000000">{</font>
<font color="#0000ff">new </font><font color="#000000">GIS().createXMLFile(</font><font color="#ff00ff">"d:\\GI-China.xml"</font><font color="#000000">);</font>
<font color="#000000">} </font><font color="#0000ff">catch </font><font color="#000000">(</font><font color="#ff0000">Exception </font><font color="#000000">e) {</font>
<font color="#000000">e.printStackTrace();</font>
<font color="#000000">}</font>
<font color="#000000">}</font>
<font color="#000000">}</font>
</font>
</pre>
</span></span></div>
<br />
2.做一个方便使用的全国城市经纬度数据库<br />
经过上面的操作，一个完整的全国城市经纬度数据库就做好了，只不过它是xml格式的，看起来还不错，<a title="下载这个数据库" href="/Files/canvas/GI-China.zip">下载这个数据库</a><br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><img id="Code_Closed_Image_195704" onclick="this.style.display='none'; Code_Closed_Text_195704.style.display='none'; Code_Open_Image_195704.style.display='inline'; Code_Open_Text_195704.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" alt="" align="top" width="11" height="16" /><img id="Code_Open_Image_195704" style="display: none;" onclick="this.style.display='none'; Code_Open_Text_195704.style.display='none'; Code_Closed_Image_195704.style.display='inline'; Code_Closed_Text_195704.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top" width="11" height="16" /><span id="Code_Closed_Text_195704" style="border: 1px solid #808080; background-color: #ffffff;">生成的xml展示</span><span id="Code_Open_Text_195704" style="display: none;"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">
<pre><font face="Courier New">
<font color="#0000ff">&lt;?xml </font><font color="#ff0000">version</font><font color="#0000ff">=</font><font color="#ff00ff">"1.0" </font><font color="#ff0000">encoding</font><font color="#0000ff">=</font><font color="#ff00ff">"UTF-8"</font><font color="#800080">?</font><font color="#0000ff">&gt;</font>
<font color="#0000ff">&lt;</font><font color="#808000">country </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"中国"</font><font color="#0000ff">&gt;</font>
<font color="#000000">  </font><font color="#0000ff">&lt;</font><font color="#808000">province </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"上海"</font><font color="#0000ff">&gt;</font>
<font color="#000000">    </font><font color="#0000ff">&lt;</font><font color="#808000">city </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"上海" </font><font color="#800080">longitude</font><font color="#0000ff">=</font><font color="#ff00ff">"121.48" </font><font color="#800080">latitude</font><font color="#0000ff">=</font><font color="#ff00ff">"31.22"</font><font color="#0000ff">/&gt;</font>
<font color="#000000">    </font><font color="#0000ff">&lt;</font><font color="#808000">city </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"嘉定" </font><font color="#800080">longitude</font><font color="#0000ff">=</font><font color="#ff00ff">"121.24" </font><font color="#800080">latitude</font><font color="#0000ff">=</font><font color="#ff00ff">"31.4"</font><font color="#0000ff">/&gt;</font>
<font color="#000000">    </font><font color="#0000ff">&lt;</font><font color="#808000">city </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"宝山" </font><font color="#800080">longitude</font><font color="#0000ff">=</font><font color="#ff00ff">"121.48" </font><font color="#800080">latitude</font><font color="#0000ff">=</font><font color="#ff00ff">"31.41"</font><font color="#0000ff">/&gt;</font>
<font color="#000000">    </font><font color="#0000ff">&lt;</font><font color="#808000">city </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"川沙" </font><font color="#800080">longitude</font><font color="#0000ff">=</font><font color="#ff00ff">"121.7" </font><font color="#800080">latitude</font><font color="#0000ff">=</font><font color="#ff00ff">"31.19"</font><font color="#0000ff">/&gt;</font>
<font color="#000000">    </font><font color="#0000ff">&lt;</font><font color="#808000">city </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"南汇" </font><font color="#800080">longitude</font><font color="#0000ff">=</font><font color="#ff00ff">"121.76" </font><font color="#800080">latitude</font><font color="#0000ff">=</font><font color="#ff00ff">"31.05"</font><font color="#0000ff">/&gt;</font>
<font color="#000000">    </font><font color="#0000ff">&lt;</font><font color="#808000">city </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"奉贤" </font><font color="#800080">longitude</font><font color="#0000ff">=</font><font color="#ff00ff">"121.46" </font><font color="#800080">latitude</font><font color="#0000ff">=</font><font color="#ff00ff">"30.92"</font><font color="#0000ff">/&gt;</font>
<font color="#000000">    </font><font color="#0000ff">&lt;</font><font color="#808000">city </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"松江" </font><font color="#800080">longitude</font><font color="#0000ff">=</font><font color="#ff00ff">"121.24" </font><font color="#800080">latitude</font><font color="#0000ff">=</font><font color="#ff00ff">"31"</font><font color="#0000ff">/&gt;</font>
<font color="#000000">    </font><font color="#0000ff">&lt;</font><font color="#808000">city </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"金山" </font><font color="#800080">longitude</font><font color="#0000ff">=</font><font color="#ff00ff">"121.16" </font><font color="#800080">latitude</font><font color="#0000ff">=</font><font color="#ff00ff">"30.89"</font><font color="#0000ff">/&gt;</font>
<font color="#000000">    </font><font color="#0000ff">&lt;</font><font color="#808000">city </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"青浦" </font><font color="#800080">longitude</font><font color="#0000ff">=</font><font color="#ff00ff">"121.1" </font><font color="#800080">latitude</font><font color="#0000ff">=</font><font color="#ff00ff">"31.15"</font><font color="#0000ff">/&gt;</font>
<font color="#000000">    </font><font color="#0000ff">&lt;</font><font color="#808000">city </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"崇明" </font><font color="#800080">longitude</font><font color="#0000ff">=</font><font color="#ff00ff">"121.4" </font><font color="#800080">latitude</font><font color="#0000ff">=</font><font color="#ff00ff">"31.73"</font><font color="#0000ff">/&gt;</font>
<font color="#000000">  </font><font color="#0000ff">&lt;/</font><font color="#808000">province</font><font color="#0000ff">&gt;</font>
<font color="#000000">  </font><font color="#0000ff">&lt;</font><font color="#808000">province </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"云南"</font><font color="#0000ff">&gt;</font>
<font color="#000000">    </font><font color="#0000ff">&lt;</font><font color="#808000">city </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"昆明" </font><font color="#800080">longitude</font><font color="#0000ff">=</font><font color="#ff00ff">"102.73" </font><font color="#800080">latitude</font><font color="#0000ff">=</font><font color="#ff00ff">"25.04"</font><font color="#0000ff">/&gt;</font>
<font color="#000000">    </font><font color="#0000ff">&lt;</font><font color="#808000">city </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"富民" </font><font color="#800080">longitude</font><font color="#0000ff">=</font><font color="#ff00ff">"102.48" </font><font color="#800080">latitude</font><font color="#0000ff">=</font><font color="#ff00ff">"25.21"</font><font color="#0000ff">/&gt;</font>
<font color="#000000">    </font><font color="#0000ff">&lt;</font><font color="#808000">city </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"晋宁" </font><font color="#800080">longitude</font><font color="#0000ff">=</font><font color="#ff00ff">"102.58" </font><font color="#800080">latitude</font><font color="#0000ff">=</font><font color="#ff00ff">"24.68"</font><font color="#0000ff">/&gt;</font>
<font color="#000000">    </font><font color="#0000ff">&lt;</font><font color="#808000">city </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"呈贡" </font><font color="#800080">longitude</font><font color="#0000ff">=</font><font color="#ff00ff">"102.79" </font><font color="#800080">latitude</font><font color="#0000ff">=</font><font color="#ff00ff">"24.9"</font><font color="#0000ff">/&gt;</font>
<font color="#000000">    </font><font color="#0000ff">&lt;</font><font color="#808000">city </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"安宁" </font><font color="#800080">longitude</font><font color="#0000ff">=</font><font color="#ff00ff">"102.44" </font><font color="#800080">latitude</font><font color="#0000ff">=</font><font color="#ff00ff">"24.95"</font><font color="#0000ff">/&gt;</font>
<font color="#000000">    </font><font color="#0000ff">&lt;</font><font color="#808000">city </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"昭通" </font><font color="#800080">longitude</font><font color="#0000ff">=</font><font color="#ff00ff">"103.7" </font><font color="#800080">latitude</font><font color="#0000ff">=</font><font color="#ff00ff">"29.32"</font><font color="#0000ff">/&gt;</font>
<font color="#000000">    </font><font color="#0000ff">&lt;</font><font color="#808000">city </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"永善" </font><font color="#800080">longitude</font><font color="#0000ff">=</font><font color="#ff00ff">"103.63" </font><font color="#800080">latitude</font><font color="#0000ff">=</font><font color="#ff00ff">"28.22"</font><font color="#0000ff">/&gt;</font>
<font color="#000000">    </font><font color="#0000ff">&lt;</font><font color="#808000">city </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"大关" </font><font color="#800080">longitude</font><font color="#0000ff">=</font><font color="#ff00ff">"103.91" </font><font color="#800080">latitude</font><font color="#0000ff">=</font><font color="#ff00ff">"27.74"</font><font color="#0000ff">/&gt;</font>
<font color="#000000">    </font><font color="#0000ff">&lt;</font><font color="#808000">city </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"彝良" </font><font color="#800080">longitude</font><font color="#0000ff">=</font><font color="#ff00ff">"104.06" </font><font color="#800080">latitude</font><font color="#0000ff">=</font><font color="#ff00ff">"27.61"</font><font color="#0000ff">/&gt;</font>
<font color="#000000">    </font><font color="#0000ff">&lt;</font><font color="#808000">city </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"鲁甸" </font><font color="#800080">longitude</font><font color="#0000ff">=</font><font color="#ff00ff">"103.54" </font><font color="#800080">latitude</font><font color="#0000ff">=</font><font color="#ff00ff">"27.21"</font><font color="#0000ff">/&gt;</font>
<font color="#000000">    </font><font color="#0000ff">&lt;</font><font color="#808000">city </font><font color="#ff0000">name</font><font color="#0000ff">=</font><font color="#ff00ff">"绥江" </font><font color="#800080">longitude</font><font color="#0000ff">=</font><font color="#ff00ff">"103.97" </font><font color="#800080">latitude</font><font color="#0000ff">=</font><font color="#ff00ff">"28.58"</font><font color="#0000ff">/&gt;</font>
</font>
</pre>
</span></span></div>
<br />
3.利用google天气api做一个全面的天气预报服务<br />
google提供的天气api可以有两种方式访问，<br />
一种是<br />
<a href="http://www.google.com/ig/api?hl=zh-cn&amp;weather=,,,30670000,104019996" target="_blank">&nbsp;&nbsp;&nbsp;&nbsp; http://www.google.com/ig/api?hl=zh-cn&amp;weather=,,,30670000,104019996</a> <br />
30670000为纬度，104019996为经度，这个是把上面的xml中的经纬度乘以了10^6(10的六次方)，这个方法有个好处，就是可以根据经纬度获得天气预报，自然预报地区也可变得精确些<br />
另一种是<br />
&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.google.com/ig/api?weather=Beijing" target="_blank">http://www.google.com/ig/api?weather=Beijing</a><br />
这个链接比较简单，但是支持的城市比较少，所以还是使用第一种方式比较好，于是才整理好了所有城市的经纬度<br />
<br />
访问上面的链接，google返回的xml内容看起来是这样的<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><img id="Code_Closed_Image_202556" onclick="this.style.display='none'; Code_Closed_Text_202556.style.display='none'; Code_Open_Image_202556.style.display='inline'; Code_Open_Text_202556.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" alt="" align="top" width="11" height="16" /><img id="Code_Open_Image_202556" style="display: none;" onclick="this.style.display='none'; Code_Open_Text_202556.style.display='none'; Code_Closed_Image_202556.style.display='inline'; Code_Closed_Text_202556.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top" width="11" height="16" /><span id="Code_Closed_Text_202556" style="border: 1px solid #808080; background-color: #ffffff;">google返回的xml</span><span id="Code_Open_Text_202556" style="display: none;"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #0000ff;">&lt;?</span><span style="color: #ff00ff;">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff;">?&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">xml_api_reply&nbsp;</span><span style="color: #ff0000;">version</span><span style="color: #0000ff;">="1"</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">weather&nbsp;</span><span style="color: #ff0000;">module_id</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;">&nbsp;tab_id</span><span style="color: #0000ff;">="0"</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">forecast_information</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">city&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">=""</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">postal_code&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">=""</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">latitude_e6&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="30670000"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">longitude_e6&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="104019996"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">forecast_date&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="2009-03-05"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">current_date_time&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="2009-03-05&nbsp;19:00:00&nbsp;+0000"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">unit_system&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="SI"</span><span style="color: #0000ff;">/&gt;&lt;/</span><span style="color: #800000;">forecast_information</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">current_conditions</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">condition&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="晴"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">temp_f&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="61"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">temp_c&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="16"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">humidity&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="湿度：&nbsp;45%"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">icon&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="/images/weather/sunny.gif"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">wind_condition&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="风向：&nbsp;北、风速：6&nbsp;(公里/小时）"</span><span style="color: #0000ff;">/&gt;&lt;/</span><span style="color: #800000;">current_conditions</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">forecast_conditions</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">day_of_week&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="周四"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">low&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="7"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">high&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="16"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">icon&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="/images/weather/mostly_sunny.gif"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">condition&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="以晴为主"</span><span style="color: #0000ff;">/&gt;&lt;/</span><span style="color: #800000;">forecast_conditions</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">forecast_conditions</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">day_of_week&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="周五"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">low&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="4"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">high&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="9"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">icon&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="/images/weather/chance_of_rain.gif"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">condition&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="可能有雨"</span><span style="color: #0000ff;">/&gt;&lt;/</span><span style="color: #800000;">forecast_conditions</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">forecast_conditions</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">day_of_week&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="周六"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">low&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="5"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">high&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="10"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">icon&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="/images/weather/mostly_sunny.gif"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">condition&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="以晴为主"</span><span style="color: #0000ff;">/&gt;&lt;/</span><span style="color: #800000;">forecast_conditions</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">forecast_conditions</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">day_of_week&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="周日"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">low&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="3"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">high&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="12"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">icon&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="/images/weather/chance_of_rain.gif"</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">condition&nbsp;</span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="可能有雨"</span><span style="color: #0000ff;">/&gt;&lt;/</span><span style="color: #800000;">forecast_conditions</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">weather</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">xml_api_reply</span><span style="color: #0000ff;">&gt;</span></span></div>
<br />
对于返回的xml中的&lt;icon data="/images/weather/cn_cloudy.gif"/&gt;，可以这样构造链接获取google提供的图片<br />
取其中的cn_cloudy.gif，然后放在http://www.google.cn/ig/images/weather/之后，生成的链接是<br />
&nbsp;&nbsp;&nbsp;&nbsp; http://www.google.cn/ig/images/weather/cn_cloudy.png<br />
这样这个天气api就基本构思好了<br />
<br />
4.学习用python编写webservice(待续&#8230;&#8230;)<br />
将这个服务编写为一个webservice，决定使用python去写，所以要学习一下python了<br />
<br />
<br />
<img src ="http://www.blogjava.net/canvas/aggbug/259355.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/canvas/" target="_blank">Barrie</a> 2009-03-12 20:34 <a href="http://www.blogjava.net/canvas/articles/GS-China.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>