2012-11-21 23 views
0

enter image description here屬性我有一個XML是這樣的:無法找到我要找的使用Python的ElementTree

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

<startingBalance account="1220" balance="3453871"/> 看到圖片的更多信息

現在我想如果發現前一個帳戶「1220」有fiscalYear 2012年一startingBalance的問題是,我有幾個fiscalYears在XML和屬性 「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) 

,但它只是打印出「不startingBalance發現今年」 5次(5個fiscalyears在XML)

難道有人有線索如何解決它...? THX

回答

1

如果我讀您的XML正確的,那麼startingBalance不是ATTRIB,而是一個標籤。改變你的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 
+0

Thx幫助,沒有幫助,仍然是相同的輸出,任何更多的想法:)? – martin

+0

檢查變量accountNr的類型。它必須是一個字符串。如果它是一個數字,那麼你將不會得到任何匹配。 – MikeHunter

+0

我編輯的答案表示追加的問題,我發現 – MikeHunter