Pythonには新しく、Pythonを学ぶプロジェクトを構築しています。このプロジェクトには、ElementTreeを使用したXML解析が含まれています。これは完全に正常に動作し、ほとんどのXMLファイルの場合findall()が一致しないとElementTreeでXMLを解析するデフォルト値を提供する
import xml.etree.ElementTree as etree
tree = etree.parse('ar.xml')
root = tree.getroot()
ns = {'nbb': 'http://www.nbb.be/be/fr/pfs/ci/2017-04-01'}
for ass in tree.findall("nbb:Assets[@contextRef='CurrentInstant']", ns):
assets = ass.text
for pay in tree.findall("nbb:AmountsPayable[@contextRef='CurrentInstant']", ns):
payables = pay.text
for prov in tree.findall("nbb:ProvisionsDeferredTaxes[@contextRef='CurrentInstant']", ns):
provisions = prov.text
for cap in tree.findall("nbb:IssuedCapital[@contextRef='CurrentInstant']", ns):
capital = cap.text
print assets
print payables
print provisions
print capital
:
これは私が現在持っているコードです。
しかし、コードを使用したいXMLファイルの中には要素( "nbb:ProvisionsDeferredTaxes [@ contextRef = 'CurrentInstant']"、ns)がありません。そのような場合、次のエラーが表示されます。名前 'provision'は定義されていません。
私は、変数を使用してコードをさらに下げていく必要があります(assets:provisionなど)。そして、 'provision'という値をXMLファイルの0に割り当てる必要があります。 "nbb:ProvisionsDeferredTaxes [@ contextRef = 'CurrentInstant']"、ns)要素。
どうすればよいですか?
多くの感謝! break
が行われたことがないとき
for prov in tree.findall("nbb:ProvisionsDeferredTaxes[@contextRef='CurrentInstant']", ns):
provisions = int(prov.text)
break
else:
provisions = 0
else
句が実行されます。
はもっと重要な実装言語よりも、問題の本質的な要素が含まれるように、タイトルのスペースを使用する - タグが使用されていますタイトルの言語を自然に流す(そして簡単に適合する)場合を除いて、言語の表示とフィルタリングのために使用されます。 [discussion on meta](https://meta.stackoverflow.com/a/251861/14122)を参照してください。 –