0

緯度と経度を指定して、ジオネーム 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 に答える