如何删除特定标签

时间:2010-06-24 12:12:49

标签: python lxml

我有以下XML文件:

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

这只是一个块,有多个<bookname>标签。我需要遍历整个文档并删除特定的<text>标记。我该怎么做?

我的方法是首先创建ElementTree,然后使用Element获取ElementTree.getroot()实例。然后我使用Element.clear()。这种方法可以吗?我曾想使用Element.remove(),但我无法让它发挥作用。任何人都可以为我提供示例语法。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

只需致电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>'
>>>

这里我拿了bookname节点并要求它删除它的第二个孩子。

要查找要删除的节点,我会使用xpath