1

使用 lxml 的 API,可以通过查询根元素的兄弟(及其兄弟)来访问根之前的初步元素,例如处理指令和注释:

>>> buffer = StringIO('<?xml version="1.0" ?><?PI foo?><root/>')
>>> doc = etree.parse(buffer)
>>> root = doc.getroot()
>>> pi = root.getprevious()
>>> str(pi)
'<?PI foo?>'

但是,为了从文档中删除元素,必须涉及父元素:

parent.remove(child)

显然,该处理指令元素没有可用的父级。我可以对根进行深度复制以获得另一棵没有先前兄弟姐妹的树,但这显然不是一个更可取的解决方案。有谁知道实现这种删除的解决方案不需要在代码中进行解释性注释?(将解释转移到函数名称不会算作答案。)

4

0 回答 0