遍历XML标签并在该属性内获取标签-Python

时间:2018-11-19 22:39:52

标签: python xml

我正在寻找xml数据中的子标签值,下面的代码为我提供了xml数据中“信息”内部的所有标签“ color”的值,但是我正在寻找一个迭代,

如果颜色=黄色,我只需要获得其排名即可。

****我的代码:****

xmldata = '''
 <FullGroup>
    <color>General</color>
    <link>url</link>
    <three>test</three>
    <four>
      <info>
        <color>yellow</color>
        <rank>100</rank>
        <place>first</place>
      </info>
      <info>
        <color>red</color>
        <rank>500</rank>
        <place>second</place>
      </info>
     </four>
 </FullGroup>'''  

xml = ElementTree.fromstring(xmldata)
for color in xml.findall('.//info/color'):
   print color.text

output: 
yellow
red

Required output:
100

预先感谢..

2 个答案:

答案 0 :(得分:1)

您可以像这样使用zip()

for color, rank in zip(xml.findall('.//info/color'), xml.findall('.//info/rank')):
    if color.text == 'yellow':
        print(rank.text)

答案 1 :(得分:1)

您的XPath表达式错误。要获得所有rank个元素的info个子元素,这些元素的子元素名为color,其子元素的text()值为“黄色”,请更改

xml = ElementTree.fromstring(xmldata)
for color in xml.findall('.//info/color'):
   print color.text

xml = ElementTree.fromstring(xmldata)
for curRank in xml.findall('.//info[color="yellow"]/rank'):
   print curRank.text

输出为:

100