我有一个 XML 文件,想删除具有给定属性=值的节点内的所有内容,但一直无法使元素树.remove()方法起作用。我得到一个list.remove(x): x not in list错误。
如果我有一个包含多个段落和列表元素的 div,v1-9,deleted我希望能够删除整个 div 及其所有内容的属性。
import xml.etree.ElementTree as ET
#get target file
tree = ET.parse('tested.htm')
#pull into element tree
root = tree.getroot()
#confirm output
print(root)
#define xlmns tags
MadCap = {'MadCap': 'http://www.madcapsoftware.com/Schemas/MadCap.xsd'}
i=1
j=6
# specify state
state = "state.deleted-in-vers"
# specify version
vers = "version-number.v{}-{}".format(i,j)
# combine to get conditional string might need to double up b/c of order mattering here???
search = ".//*[@MadCap:conditions='{},{}']".format(vers,state)
#get matching elements
for elem in root.findall(search, MadCap):
print('---PARENT---')
print(elem)
print('attributes:', elem.attrib)
print('text:', elem.text)
elem.text = " "
elem.attrib = {}
for child in elem.iter():
print('-child element-')
print(child)
elem.remove(child)
print('==========')
为简单起见,我在上面省略了 i 和 j 上的循环。
这是目标 xml 的片段,因此您可以看到如何使用这些属性。
慕神8447489
相关分类