ElementTree无法找到指定子元素AuthorisationNr的问题求助
ElementTree解析XML标签异常求助
使用Python的ElementTree解析XML时,可正常定位ns4:Data节点下的ParallelCircuit等标签,但无法找到AuthorisationNr标签。遍历ns4:Data的子元素时能看到该元素存在,甚至直接复制完整标签名调用find()方法也无效,寻求技术解决方案。
相关XML片段
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ns4:ExportActualMedicines xmlns="urn:be:fgov:ehealth:samws:v2:actual:common" ... xmlns:ns4="urn:be:fgov:ehealth:samws:v2:export" xmlns:ns5="urn:be:fgov:ehealth:samws:v2:refdata" ... version="6.0" SamId="E.20240325_150005"> <ns4:Amp code="SAM660978-00"> <ns4:Ampp ctiExtended="660978-01"> <ns4:Data from="2023-01-10" to="2023-01-31"> <AuthorisationNr>HO-BE-UH660978</AuthorisationNr> <ParallelCircuit>0</ParallelCircuit> <PackDisplayValue> ... </PackDisplayValue> <Status>AUTHORIZED</Status> ... </ns4:Data> </ns4:Ampp> </ns4:Amp> </ns4:ExportActualMedicines>
相关Python代码片段
NS4 = '{urn:be:fgov:ehealth:samws:v2:export}' XMLNS = '{urn:be:fgov:ehealth:samws:v2:actual:common}' tree = ET.parse(file) root = tree.getroot() for amp in root.findall(f'{NS4}Amp') for item in amp: if item.tag == f'{NS4}Ampp': ampp = {'code': item.attrib['ctiExtended'], 'data': []} for elem in item: if elem.tag == f'{NS4}Data': authorisation_number = elem.find(f'{XMLNS}AuthorisationNr') parallel_circuit = elem.find(f'{XMLNS}ParallelCircuit') pack_display_value = elem.find(f'{XMLNS}PackDisplayValue') ampp['data'].append({ 'from': elem.attrib['from'], 'to': elem.attrib['to'] if 'to' in elem.attrib else None, 'authorisation_number': authorisation_number if authorisation_number else None, 'pack_display_value': pack_display_value[0].text if pack_display_value else None, 'parallel_circuit': parallel_circuit.text if parallel_circuit else None ... })
遍历ns4:Data子元素的输出
if elem.tag == f'{NS4}Data': for data in elem: print(data) --- Output: <Element '{urn:be:fgov:ehealth:samws:v2:actual:common}AuthorisationNr' at 0x00000212DB3235B0> ... <Element '{urn:be:fgov:ehealth:samws:v2:actual:common}ParallelCircuit' at 0x00000212DB323D80> <Element '{urn:be:fgov:ehealth:samws:v2:actual:common}PackDisplayValue' at 0x00000212DB323E20> ...
内容的提问来源于stack exchange,提问作者Rafael
相关产品推荐
相关产品推荐

