我试图根据子内容找到特定标签并删除父标签和内容,但找不到答案。这是我的 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>
block ,如果是的话我想删除整个 <crew>
阻止<role>Primary</role>
存在于,它的父级。
所以结果是:
<video>
<crew>
<member billing="top">
<name>Some Guy</name>
<roles>
<role>Painter</role>
<role>Decorator</role>
</roles>
</crew>
</video>
它有时不是最后,可能被埋在许多其他 <crew>
中标签,所以我知道该 block 是否包含 <role>Primary</role>
我想删除整个 <crew>
它所在的 block 。
我尝试过:
for find1 in root.iter(tag='role'):
find1 = find1.text
if find1 == "Primary":
path = tree.xpath('//video/crew')
etree.strip_elements(path, 'member')
但这会删除所有 <crew>
标签及其内容。
亲切的问候。
最佳答案
使用 xpath:
for crew in root.xpath('.//crew[descendant::role[contains(text(), "Primary")]]'):
crew.getparent().remove(crew)
关于python - 根据子标签值删除标签和内容 - python lxml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17594274/