如何使用 python 中的 'if statements' 替换 xml 行?
How to replace xml lines using 'if statements' in python?
您好,我是 xml 文件的新手,但我正在尝试使用 python 3.6 中的 'if statements' 替换 xml 文件中的特定行。我一直在寻找使用 ElementTree 的建议,但是 none 的在线帖子非常适合我遇到的问题,所以我来了。
我的文件如下:
<?xml version="1.0" encoding="UTF-8"?>
-<StructureDefinition xmlns="http://hl7.org/fhir">
<url value="http://example.org/fhir/StructureDefinition/MyObservation"/>
<name value="MyObservation"/>
<status value="draft"/>
<fhirVersion value="3.0.1"/>
<kind value="resource"/>
<abstract value="false"/>
<type value="Observation"/>
<baseDefinition value="http://hl7.org/fhir/StructureDefinition/Observation"/>
<derivation value="constraint"/>
</StructureDefinition>
我要替换
url value="http://example.org/fhir/StructureDefinition/MyObservation"/
类似于
url value="http://example.org/fhir/StructureDefinition/NewObservation"/
通过使用条件语句 - 因为这些在其他文件中重复了多次。
我已经尝试通过 xml 查找进行循环以找到精确的字符串匹配(我已经成功了),但我无法删除或替换该行(可能必须处理这不是 .txt 文件这一事实)。
非常感谢任何帮助!
您的示例文件在 ln 3 中包含一个“-”标记,在 copy/pasting 寻找解决方案时可能会被忽略。
输入文件
<?xml version="1.0" encoding="UTF-8"?>
<StructureDefinition xmlns="http://hl7.org/fhir">
<url value="http://example.org/fhir/StructureDefinition/MyObservation"/>
<name value="MyObservation"/>
<status value="draft"/>
<fhirVersion value="3.0.1"/>
<kind value="resource"/>
<abstract value="false"/>
<type value="Observation"/>
<baseDefinition value="http://hl7.org/fhir/StructureDefinition/Observation"/>
<derivation value="constraint"/>
</StructureDefinition>
脚本
from xml.dom.minidom import parse # use minidom for this task
dom = parse('june.xml') #read in your file
search = "http://example.org/fhir/StructureDefinition/MyObservation" #set search value
replace = "http://example.org/fhir/StructureDefinition/NewObservation" #set replace value
res = dom.getElementsByTagName('url') #iterate over url tags
for element in res:
if element.getAttribute('value') == search: #in case of match
element.setAttribute('value', replace) #replace
with open('june_updated.xml', 'w') as f:
f.write(dom.toxml()) #update the dom, save as new xml file
输出文件
<?xml version="1.0" ?><StructureDefinition xmlns="http://hl7.org/fhir">
<url value="http://example.org/fhir/StructureDefinition/NewObservation"/>
<name value="MyObservation"/>
<status value="draft"/>
<fhirVersion value="3.0.1"/>
<kind value="resource"/>
<abstract value="false"/>
<type value="Observation"/>
<baseDefinition value="http://hl7.org/fhir/StructureDefinition/Observation"/>
<derivation value="constraint"/>
</StructureDefinition>
您好,我是 xml 文件的新手,但我正在尝试使用 python 3.6 中的 'if statements' 替换 xml 文件中的特定行。我一直在寻找使用 ElementTree 的建议,但是 none 的在线帖子非常适合我遇到的问题,所以我来了。
我的文件如下:
<?xml version="1.0" encoding="UTF-8"?>
-<StructureDefinition xmlns="http://hl7.org/fhir">
<url value="http://example.org/fhir/StructureDefinition/MyObservation"/>
<name value="MyObservation"/>
<status value="draft"/>
<fhirVersion value="3.0.1"/>
<kind value="resource"/>
<abstract value="false"/>
<type value="Observation"/>
<baseDefinition value="http://hl7.org/fhir/StructureDefinition/Observation"/>
<derivation value="constraint"/>
</StructureDefinition>
我要替换
url value="http://example.org/fhir/StructureDefinition/MyObservation"/
类似于
url value="http://example.org/fhir/StructureDefinition/NewObservation"/
通过使用条件语句 - 因为这些在其他文件中重复了多次。
我已经尝试通过 xml 查找进行循环以找到精确的字符串匹配(我已经成功了),但我无法删除或替换该行(可能必须处理这不是 .txt 文件这一事实)。 非常感谢任何帮助!
您的示例文件在 ln 3 中包含一个“-”标记,在 copy/pasting 寻找解决方案时可能会被忽略。
输入文件
<?xml version="1.0" encoding="UTF-8"?>
<StructureDefinition xmlns="http://hl7.org/fhir">
<url value="http://example.org/fhir/StructureDefinition/MyObservation"/>
<name value="MyObservation"/>
<status value="draft"/>
<fhirVersion value="3.0.1"/>
<kind value="resource"/>
<abstract value="false"/>
<type value="Observation"/>
<baseDefinition value="http://hl7.org/fhir/StructureDefinition/Observation"/>
<derivation value="constraint"/>
</StructureDefinition>
脚本
from xml.dom.minidom import parse # use minidom for this task
dom = parse('june.xml') #read in your file
search = "http://example.org/fhir/StructureDefinition/MyObservation" #set search value
replace = "http://example.org/fhir/StructureDefinition/NewObservation" #set replace value
res = dom.getElementsByTagName('url') #iterate over url tags
for element in res:
if element.getAttribute('value') == search: #in case of match
element.setAttribute('value', replace) #replace
with open('june_updated.xml', 'w') as f:
f.write(dom.toxml()) #update the dom, save as new xml file
输出文件
<?xml version="1.0" ?><StructureDefinition xmlns="http://hl7.org/fhir">
<url value="http://example.org/fhir/StructureDefinition/NewObservation"/>
<name value="MyObservation"/>
<status value="draft"/>
<fhirVersion value="3.0.1"/>
<kind value="resource"/>
<abstract value="false"/>
<type value="Observation"/>
<baseDefinition value="http://hl7.org/fhir/StructureDefinition/Observation"/>
<derivation value="constraint"/>
</StructureDefinition>