0

ここに画像の説明を入力私は次のようなxmlを持っています:

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

<startingBalance account="1220" balance="3453871"/> 詳細については、写真を参照してください

ここで、ex アカウント "1220" に 2012 年度の会計年度の 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会計年度)

誰かがそれを修正する方法の手がかりを持っていますか...?どうも

4

1 に答える 1

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
于 2012-11-21T15:24:20.427 に答える