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)가 없습니다. 이 경우 다음과 같은 오류가 나타납니다. '조항'이름이 정의되지 않았습니다.
변수를 사용하여 계산을 추가로 낮추어야합니다 (예 : assets - provisions). '조항'값을 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)를 참조하십시오. –