I am looking for a way to filter this XML string and print the "identifiant" value where the "source" field is HAL.
<sudoc service="idref2source">
<query>
<ppn>115565329</ppn>
<result>
<source>HAL</source>
<identifiant>chl</identifiant>
</result>
</query>
<query>
<ppn>115565329</ppn>
<result>
<source>VIAF</source>
<identifiant>http://viaf.org/viaf/202196105</identifiant>
</result>
</query>
</sudoc>
I only parsed the string using minidom
dom = parseString(r.content)
Many thanks !
Below - 1 line of code
import xml.etree.ElementTree as ET
xml = '''
<sudoc service="idref2source">
<query>
<ppn>115565329</ppn>
<result>
<source>HAL</source>
<identifiant>chl</identifiant>
</result>
</query>
<query>
<ppn>115565329</ppn>
<result>
<source>VIAF</source>
<identifiant>http://viaf.org/viaf/202196105</identifiant>
</result>
</query>
</sudoc>
'''
root = ET.fromstring(xml)
hals = [s.find('identifiant').text for s in root.findall('.//result/[source="HAL"]')]
print(hals)