我是xml解析的新手。This xml file具有以下树:
FHRSEstablishment
|--> Header
| |--> ...
|--> EstablishmentCollection
| |--> EstablishmentDetail
| | |-->...
| |--> Scores
| | |-->...
|--> EstablishmentCollection
| |--> EstablishmentDetail
| | |-->...
| |--> Scores
| | |-->...
但当我使用ElementTree访问它并查找child
标记和属性时
import xml.etree.ElementTree as ET
import urllib2
tree = ET.parse(
file=urllib2.urlopen('http://ratings.food.gov.uk/OpenDataFiles/FHRS408en-GB.xml' % i))
root = tree.getroot()
for child in root:
print child.tag, child.attrib
我只得到:
Header {}
EstablishmentCollection {}
我认为这意味着它们的属性是空的。为什么是这样,我如何访问嵌套在EstablishmentDetail
和Scores
中的子元素?
编辑
由于下面的答案,我可以进入树中,但是如果我想检索诸如Scores
中的值,这将失败:
for node in root.find('.//EstablishmentDetail/Scores'):
rating = node.attrib.get('Hygiene')
print rating
并产生
None
None
None
为什么?
希望它能有用:
你必须在你的根上。
这就是
root.iter()
的诀窍!输出:
EstablishmentDetail
中获取所有标记,您需要找到该标记,然后遍历其子标记!比如说。
输出:
Hygiene
的分数你所做的是,它将得到第一个
Scores
标记,当你调用for each in root.find('.//Scores'):rating=child.get('Hygiene')
时,它将具有卫生性、信任管理、结构标记。也就是说,显然三个孩子都没有这个元素!你得先 -找到所有标签。 -在找到的每个标记中查找
Hygiene
!输出:
相关问题 更多 >
编程相关推荐