如何使用 Python LXML 重命名节点?

How to rename a node with Python LXML?

如何使用 LXML 重命名节点?

具体来说,如何在保留所有底层结构的同时重命名父节点,即 <body> 标签?

我正在使用 lxml.html 模块进行解析,但据推测 xml 和 html 在 lxml.html.HtmlElement 及其 XML对口。

我在 LXML 站点上搜索了文档,但没有找到任何关于重命名节点的参考。

获得 <body> 元素后,只需更改其 tag 属性即可。

import lxml.etree
import lxml.html

doc = lxml.html.fromstring("<html><body><p></body></html>")
body = doc.find('body')
body.tag = "body-not"
print(lxml.etree.tostring(doc))

这会打印

b'<html><body-not><p/></body-not></html>'