0

我希望通过提供纬度和经度从 geoname api 中检索 timezoneId 标签。

http://api.geonames.org/timezone?lat=39.758720&lng=116.041420&username=demo

它的结构是这样的:

<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 没有返回任何孩子......我做错了什么?

4

1 回答 1

0

我注意到您在最后一行将其拼写为“noveValue”。这是错字还是实际代码?

如果你想要 timezoneId,你可以在树下继续 getElementsByTagName。

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 的文本节点值。

于 2012-07-21T06:01:44.037 回答