簡體   English   中英

如何在python中使用“if語句”替換xml行?

[英]How to replace xml lines using 'if statements' in python?

嗨,我是 xml 文件的新手,但我正在嘗試使用 python 3.6 中的“if 語句”替換 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"/

通過使用條件語句 - 因為這些在其他文件中重復多次。

我已經嘗試通過 xml find for-looping 來找到確切的字符串匹配(我已經成功),但我無法刪除或替換該行(可能與事實有關,這不是.txt 文件)。 任何幫助是極大的贊賞!

您的示例文件在 ln 3 中包含一個“-”-token,在復制/粘貼以找到解決方案時可能會忽略該標記。

輸入文件

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM