如何在python中使用'if语句'替换xml行?

问题描述 投票:-1回答:1

嗨我一般都是xml文件的新手,但我试图用python 3.6中的'if statements'替换xml文件中的特定行。我一直在寻找使用ElementTree的建议,但是网上的帖子都不符合我的问题,所以我在这里。

我的文件如下:

<?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"/

通过使用条件语句 - 因为它们在其他文件中重复多次。

我已经尝试for循环通过xml find找到确切的字符串匹配(我已经成功),但我无法删除或替换该行(可能与此事实有关一个.txt文件)。任何帮助是极大的赞赏!

python xml elementtree hl7-fhir
1个回答
0
投票

您的示例文件包含ln 3中的“ - ”标记,在复制/粘贴时可能会忽略该标记以便找到解决方案。

输入文件

<?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>
© www.soinside.com 2019 - 2024. All rights reserved.