我正在尝试根据子项的内容找到特定标记并删除父标记和内容,但无法找到答案。这是我的xml:
<video>
<crew>
<member billing="top">
<name>Some Guy</name>
<roles>
<role>Painter</role>
<role>Decorator</role>
</roles>
</crew>
<crew billing="top">
<name>Another Guy</name>
<roles>
<role>Primary</role>
</roles>
</crew>
</crew>
</video>
我想要做的是搜索<role>Primary</role>
块中是否存在<crew>
,如果是,我想要删除<crew>
块<role>Primary</role>
存在于,它的父母。
结果将是:
<video>
<crew>
<member billing="top">
<name>Some Guy</name>
<roles>
<role>Painter</role>
<role>Decorator</role>
</roles>
</crew>
</video>
它有时不在最后,可能埋没在许多其他<crew>
标记中,所以我知道如果该块包含<role>Primary</role>
我想删除它所在的整个<crew>
块。
我试过了:
for find1 in root.iter(tag='role'):
find1 = find1.text
if find1 == "Primary":
path = tree.xpath('//video/crew')
etree.strip_elements(path, 'member')
但这会删除每个<crew>
标记及其内容。
亲切的问候。
答案 0 :(得分:2)
使用xpath:
for crew in root.xpath('.//crew[descendant::role[contains(text(), "Primary")]]'):
crew.getparent().remove(crew)