python解析条件xml值

时间:2012-10-24 01:22:13

标签: python xml parsing xml-parsing elementtree

这是我的XML文件:

<METAR>
<wind_dir_degrees>210</wind_dir_degrees>
<wind_speed_kt>14</wind_speed_kt>
<wind_gust_kt>22</wind_gust_kt>
</METAR>

这是我解析风向和速度的脚本。但是,阵风是一个条件值,并不总是出现在我的xml文件中。如果它确实存在,我想显示它的值,如果不存在,我想显示它。

import xml.etree.ElementTree as ET
from urllib import urlopen

link = urlopen('xml file')

tree = ET.parse(link)
root = tree.getroot()

data = root.findall('data/METAR')
for metar in data:
    print metar.find('wind_dir').text

我尝试过类似的东西,但却出错了

data = root.findall('wind_gust_kt')
for metar in data:
        if metar.find((wind_gust_kt') > 0:
           print "Wind Gust: ", metar.find('wind_gust_kt').text

2 个答案:

答案 0 :(得分:1)

您可以findtext使用默认值'',例如:

print "Wind Gust: ", meta.findtext('wind_gust_kt', '')

答案 1 :(得分:0)

当你遍历findall函数的结果时,没有必要 再次致电find - 你已经有了元素。

您可以将代码简化为以下内容:

tree = ET.parse(link)
for wind_gust in tree.findall('wind_gust_kt'):
    print "Wind gust:", wind_gust.text

您可能一直在关注本教程:

http://docs.python.org/library/xml.etree.elementtree.html#tutorial

在那里的例子中,调用了循环变量的find方法 为了找到循环元素的子元素。在你的情况下, wind_gust变量是您想要的元素,它没有子元素。