我希望通过提供纬度和经度,从地理名称api中检索timezoneId标记。
http://api.geonames.org/timezone?lat=39.758720&lng=116.041420&username=演示
它的结构是这样的:
<geonames>
<timezone tzversion="tzdata2012c">
<countryCode>CN</countryCode>
<countryName>China</countryName>
<lat>39.75872</lat>
<lng>116.04142</lng>
<timezoneId>Asia/Shanghai</timezoneId>
<dstOffset>8.0</dstOffset>
<gmtOffset>8.0</gmtOffset>
<rawOffset>8.0</rawOffset>
<time>2012-07-21 13:13</time>
<sunrise>2012-07-22 05:05</sunrise>
<sunset>2012-07-22 19:38</sunset>
</timezone>
</geonames>
我正试图通过这种方式获得元素:
document=minidom.parseString(urllib2.urlopen(DATA_SRC).read())
el=document.getElementsByTagName("geonames")[0].getElementsByTagName("timezone")[0].getElementsByTagName("timezoneId")[0]
print el.firstChild.nodeValue
显然,getElementByTagName没有返回任何子项。。。我做错了什么??
我注意到你在最后一行把它拼写为"noveValue"。这是打字错误还是实际代码?
如果您想要timezoneId,可以继续从树中获取ElementsByTagName。
document=minidom.parseString(urllib2.urlopen(DATA_SRC).read())
el=document.getElementsByTagName("geonames")[0].getElementsByTagName("timezone")[0].getElementsByTagName("timezoneId")[0]
print el.firstChild.nodeValue
el.firstChild.nodeValue
不返回任何内容的原因是因为它内部没有文本,而是返回了一个空字符串。您需要继续沿着树往下看,才能看到timezoneId的文本节点值。