[英]Remove specific numbers of XML elements having same tags and attribute values using Element tree in python
我有以下 XML 元素,我想使用 Python 中的元素樹從每個 Flagelemnts 和 Fav 元素中刪除僅有的 2 個 Item 標簽。
<Flagelements>
<Item Flags="0" />
<Item Flags="0" />
<Item Flags="0" />
<Item Flags="0" />
</Flagelements>
<Fav>
<Item ShareWhenSavedAsFav="255" />
<Item ShareWhenSavedAsFav="255" />
<Item ShareWhenSavedAsFav="255" />
<Item ShareWhenSavedAsFav="255" />
</Fav>
這是 XML 的一個巨大文件,我嘗試在下面的代碼中做同樣的事情。
for child in root:
count=0
for ch in child:
for i in ch:
i.attrib['GUID']=='4df88cf7d0da00000b30927e000007':
if i.tag == 'Item':
print(i.tag, i.attrib)
count=count+1
if count< 1:
ch.remove(i)
但它正在刪除所有帶有 Item 標簽的標簽。
另外,我嘗試了下面的代碼 with.findall 方法
for item in root.findall(".//Fav/Item"): count=count+1 if count<3: print(item.tag) item.getparent().remove(item)
但是,它拋出了以下錯誤:
'xml.etree.ElementTree.Element' object 沒有屬性 'getparent'
讓我知道如何做同樣的事情。
提前致謝。
桑巴萬
像這樣的東西:
import xml.etree.ElementTree as ET
xml = '''<r><Flagelements>
<Item Flags="0" dummy="1" />
<Item Flags="0" dummy="2" />
<Item Flags="0" dummy="3" />
<Item Flags="0" dummy="4" />
</Flagelements>
<Fav>
<Item ShareWhenSavedAsFav="255" />
<Item ShareWhenSavedAsFav="255" />
<Item ShareWhenSavedAsFav="255" />
<Item ShareWhenSavedAsFav="255" />
</Fav></r>'''
root = ET.fromstring(xml)
flag_elements = root.findall('.//Flagelements')
for fe in flag_elements:
items = fe.findall('./Item')
for idx,item in enumerate(items):
if idx < 2:
fe.remove(item)
ET.dump(root)
output
<r><Flagelements>
<Item Flags="0" dummy="3" />
<Item Flags="0" dummy="4" />
</Flagelements>
<Fav>
<Item ShareWhenSavedAsFav="255" />
<Item ShareWhenSavedAsFav="255" />
<Item ShareWhenSavedAsFav="255" />
<Item ShareWhenSavedAsFav="255" />
</Fav></r>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.