﻿<?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-canvas-文章分类-webservice</title><link>http://www.blogjava.net/canvas/category/38231.html</link><description>Thinking •  Eating •  Fishing •  Coding • Reading • Writing</description><language>zh-cn</language><lastBuildDate>Fri, 13 Mar 2009 13:35:55 GMT</lastBuildDate><pubDate>Fri, 13 Mar 2009 13:35:55 GMT</pubDate><ttl>60</ttl><item><title>中国各城市的经纬度数据(精确到县级城市)</title><link>http://www.blogjava.net/canvas/articles/GS-China.html</link><dc:creator>loh wong</dc:creator><author>loh wong</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>0</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">loh wong</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>