Python 如何删除特定标记

Python 如何删除特定标记,python,lxml,Python,Lxml,我有以下XML文件: <book> <bookname child="test"> <text> Works </text> <text> Doesn't work </text> </bookname> </book> 作品 不起作用 这只是一个块,有多个标记。我需要遍历整个文档并删除特定的标记。我该怎么做 我的方法是首先创建一个ElementTree,然后使用ElementTre

我有以下XML文件:

<book>
 <bookname child="test">
  <text> Works </text>
  <text> Doesn't work </text>
 </bookname>
</book>

作品
不起作用
这只是一个块,有多个
标记。我需要遍历整个文档并删除特定的
标记。我该怎么做

我的方法是首先创建一个
ElementTree
,然后使用
ElementTree.getroot()
获取一个
Element
实例。然后我使用
Element.clear()
。这个方法行吗?我本来想使用
Element.remove()
,但我无法让它工作。谁能给我提供一个语法示例


谢谢你的帮助

只需调用
parentNode.remove(childNode)
。大概是这样的:

>>> etree.tostring(tree)
'<book> <bookname child="test">  <text> Works </text>  <text> Doesnt work </text>    </bookname></book>'
>>> bookname=tree[0]
>>> text2=bookname[1]
>>> bookname.remove(text2)
>>> etree.tostring(tree)
'<book> <bookname child="test">  <text> Works </text>  </bookname></book>'
>>>
>etree.tostring(树)
“工作不起作用”
>>>bookname=树[0]
>>>text2=书名[1]
>>>bookname.remove(文本2)
>>>etree.tostring(树)
“工作”
>>>
在这里,我使用bookname节点并要求它删除它的第二个子节点


要查找要删除的节点,我将使用只需调用
parentNode.remove(childNode)
。大概是这样的:

>>> etree.tostring(tree)
'<book> <bookname child="test">  <text> Works </text>  <text> Doesnt work </text>    </bookname></book>'
>>> bookname=tree[0]
>>> text2=bookname[1]
>>> bookname.remove(text2)
>>> etree.tostring(tree)
'<book> <bookname child="test">  <text> Works </text>  </bookname></book>'
>>>
>etree.tostring(树)
“工作不起作用”
>>>bookname=树[0]
>>>text2=书名[1]
>>>bookname.remove(文本2)
>>>etree.tostring(树)
“工作”
>>>
在这里,我使用bookname节点并要求它删除它的第二个子节点


为了找到要删除的节点,我会使用

如何比较XPath中的文本?Lxml非常优雅-我一直喜欢它的用法看起来是多么的pythonic。这就是我来这里要给出的答案。我如何比较XPath中的文本?Lxml非常优雅——我一直喜欢它的用法看起来有多么像Python。这就是我来这里给出的答案。