[英]Python : Remove an element but not its children from xml?
我想刪除元素但不是它的孩子。 我嘗試使用此代碼,但我的代碼也刪除了它的孩子。
代碼
import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
for item in root.findall('item'):
root.remove(item)
print(ET.tostring(root))
>>> <root>
</root>
測試.xml
<?xml version="1.0" ?>
<root>
<item>
<data>
<number>01</number>
<step>one</step>
</data>
</item>
</root>
預期結果
<?xml version="1.0" ?>
<root>
<data>
<number>01</number>
<step>one</step>
</data>
</root>
您應該在刪除之前將項目的所有子item
移動到root
for item in root.findall('item'):
for child in item:
root.append(child)
root.remove(item)
print(ET.tostring(root))
代碼導致
<root>
<data>
<number>01</number>
<step>one</step>
</data>
</root>
找到帶有data
標簽的元素,將其刪除並使用元素的子元素擴展元素的父元素。
import xml.etree.ElementTree as etree
data = """
<root>
<item>
<data>
<number>01</number>
<step>one</step>
</data>
</item>
</root>
"""
tree = etree.fromstring(data)
def iterparent(tree):
for parent in tree.iter():
for child in parent:
yield parent, child
tree = etree.fromstring(data)
for parent, child in iterparent(tree):
if child.tag == "data":
parent.remove(child)
parent.extend(child)
print((etree.tostring(tree)))
將 output
<root>
<item>
<number>01</number>
<step>one</step>
</item>
</root>
改編自針對您的特定用例的類似答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.