Я пытаюсь перебрать определенный файл XML в python, чтобы заменить определенные строки.Я очень плохо знаком с форматами файлов XML и не знаю, как работают такие библиотеки, как elementTree или minidom.Этот XML-файл выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<StructureDefinition xmlns="http://hl7.org/fhir">
<url value="http://example.org/fhir/StructureDefinition/MyPatient" />
<name value="MyPatient" />
<status value="draft" />
<fhirVersion value="3.0.1" />
<kind value="resource" />
<abstract value="false" />
<type value="Patient" />
<baseDefinition value="http://hl7.org/fhir/StructureDefinition/Patient" />
<derivation value="constraint" />
<differential>
<element id="Patient.identifier.type">
<path value="Patient.identifier.type" />
<short value="Description of identifier
YY" />
<definition value="A coded type for the identifier that can be used to determine which identifier to use for a specific purpose.
YY1" />
</element>
<element id="Patient.identifier.type.coding">
<path value="Patient.identifier.type.coding" />
<short value="Code defined by a terminology system
XX" />
<definition value="A reference to a code defined by a terminology system.
XX2" />
</element>
<element id="Patient.maritalStatus.coding">
<path value="Patient.maritalStatus.coding" />
<short value="Code defined by a terminology system
XX" />
<definition value="A reference to a code defined by a terminology system.
XX1" />
</element>
<element id="Patient.contact.relationship.coding">
<path value="Patient.contact.relationship.coding" />
<short value="Code defined by a terminology system
XX" />
<definition value="A reference to a code defined by a terminology system.
XX1" />
</element>
<element id="Patient.contact.organization.identifier.type.coding">
<path value="Patient.contact.organization.identifier.type.coding" />
<short value="Code defined by a terminology system
XX" />
<definition value="A reference to a code defined by a terminology system.
XX1" />
</element>
</differential>
</StructureDefinition>
, как вы можете видеть выше, есть места, отмеченные XX (короткое значение) или XX1 (значение определения), которые я хочу заменить некоторым текстом.Кроме того, все места, отмеченные XX, находятся под «коротким значением» некоторого элемента с именем, оканчивающимся на «.coding», а XX1 - под «значением определения» (которое является всеми подэлементами элемента «дифференциального»).Я не могу понять, как это организовать, что у меня есть, как показано ниже:
from xml.dom.minidom import parse # use minidom for this task
dom = parse('C:/Users/Joon/Documents/FHIR/MyPatient.StructureDefinition.xml') #read in your file
replace1 = "replacement text" #set replace value
replace2 = "replacement text2" #set replace value2
res = dom.getElementsByTagName('*.coding') #iterate over tags
for element in res:
print('true')
element.setAttribute('short value', replace1)
element.setAttribute('definition value', replace2)
with open('MyPatientUpdated.StructureDefinition.xml', 'w', encoding='UTF8') as f:
f.write(dom.toxml()) #update the dom, save as new xml file
Я не могу заставить цикл вывести «true», потому что «res» - пустой список,Любая помощь с благодарностью, заранее спасибо!