从XML中提取特定信息(Google Distance Matrix API)

时间:2016-10-04 18:39:21

标签: python xml elementtree

这是我的XML输出:

<DistanceMatrixResponse>
<status>OK</status>
<origin_address>
868-978 Middle Tennessee Blvd, Murfreesboro, TN 37130, USA
</origin_address>
<destination_address>
980-1060 Middle Tennessee Blvd, Murfreesboro, TN 37130, USA
</destination_address>
<row>
<element>
<status>OK</status>
<duration>
<value>19</value>
<text>1 min</text>
</duration>
<distance>
<value>154</value>
<text>0.1 mi</text>
</distance>
</element>
</row>
</DistanceMatrixResponse>

我正在尝试使用Python从本地保存此XML(此部分已完成)。保存文件后,我想提取&#39;持续时间&#39;值(在这种情况下为19)和距离&#39;值(在这种情况下为154)。

我似乎无法弄清楚如何从这个XML中读取和提取必要的信息。我尝试过使用ElementTree并尝试从stackoverflow实现其他解决方案,但没有运气。我应该在快速的过程中大约3个小时。

这是我现在的代码:

import urllib2
import xml.etree.ElementTree as ET

## import XML and save it out
url = "https://maps.googleapis.com/maps/api/distancematrix/xml?units=imperial&origins=35.827581,-86.394077&destinations=35.827398,-86.392381&key=mygooglemapsAPIkey"
s = urllib2.urlopen(url)
contents = s.read()
file = open("export.xml", 'w')
file.write(contents)
file.close()
## finish saving the XML


element_tree = ET.parse("export.xml")
root = element_tree.getroot()
agreement = root.find("duration").text
print agreement


## open XML and save out travel time in seconds
xmlfile = 'export.xml'
element_tree = ET.parse(xmlfile)
root = element_tree.getroot()
agreement = root.findall("duration").text
print agreement

当前错误消息是:AttributeError:&#39; Nonetype&#39;对象没有属性&#39; text&#39;

我知道代码是不完整的,以获取持续时间和距离,但我只是想在这一点上努力工作!

1 个答案:

答案 0 :(得分:0)

只需使用XPath queries

   case 
    when massIndex >= 30.0
     "obese"
    [some instructions like this]
    else
     "error"
   end

这是一个很好的XPath教程:http://zvon.org/comp/r/tut-XPath_1.html