簡體   English   中英

使用ElementTree修改XML

[英]Modify a XML using ElementTree

<grandParent>
    <parent>
       <child>Sam/Astronaut</child>
    </parent>
</grandParent>

我想通過在父標記內添加另一個子標記來修改上述XML。 我正在做這樣的事情。

tree = ET.parse("test.xml")
a=ET.Element('parent')
b=ET.SubElement(a,"child")
b.text="Jay/Doctor"
tree.write("test.xml")

這是修改xml文件的正確方法嗎? 還有更好的方法嗎? 還是上述代碼中我還要注意什么?

您的代碼將創建一棵全新的樹,並向其中添加Jay。 您需要將Jay連接到現有樹,而不是新樹。

嘗試這個:

import xml.etree.ElementTree as ET

tree = ET.parse("test.xml")
a = tree.find('parent')          # Get parent node from EXISTING tree
b = ET.SubElement(a,"child")
b.text = "Jay/Doctor"
tree.write("test.xml")

如果要搜索特定的孩子,可以執行以下操作:

import xml.etree.ElementTree as ET
tree = ET.parse("test.xml")
a = tree.find('parent')
for b in a.findall('child'):
    if b.text.strip() == 'Jay/Doctor':
        break
else:
    ET.SubElement(a,"child").text="Jay/Doctor"
tree.write("test.xml")

注意a.findall() (類似於a.find() ,但是返回所有命名的元素)。 xml.etree搜索條件非常有限。 您可能會考慮使用lxml.etree及其.xpath()方法。

暫無
暫無

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

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