使用Python ElementTree找不到我正在寻找的属性

时间:2012-11-21 15:12:33

标签: python elementtree

enter image description here我的xml看起来像这样:

<fiscalYear start="2012-01-01" end="2012-12-31">2012

<startingBalance account="1220" balance="3453871"/> 查看图片了解更多信息

现在我想查找ex帐户“1220”是否具有2012财年的起始平衡。问题是我在xml和属性中有几个financialYears “startingBalance”我没有一年可以寻找。所以在某种程度上我必须同时查看“fiscalYear”和“startingBalance”,但我不知道如何使用ElementTree。

我试过这样做:

fiscalYear = xmltree.iter('fiscalYear')
   startingBalance = 0
   for i in fiscalYear:
          if "startingBalance" in i.attrib:
                 print("found something")
                 if i.attrib['account'] == accountNr:
                        startingBalance = i.attrib['balance']
                 else:
                        print("No startingBalance found for account:", accountNr,"year:",year )
          else:
                 print("No startingBalance found for year:",year )

但它打印出“没有找到年度起始平衡”5次(xml中有5个fiscalyears)

有人知道如何解决它......? THX

1 个答案:

答案 0 :(得分:1)

如果我正在读你的xml,那么startingBalance不是一个属性,而是一个标签。将您的if语句更改为

if "startingBalance" in i.tag:

并查看是否有帮助。

我用我在这里的一些xml测试了你的代码,另一个问题是你的代码没有到达fiscalYear的子元素。您必须添加另一行迭代子元素。像这样:

   for i in fiscalYear:
       for subele in i:   
           if "startingBalance" in subele.tag:
               print("found something")
               if subele.attrib['account'] == accountNr:
                    startingBalance = subele.attrib['balance']
                    #etc, etc