如何将未转义的文本添加到 Python 中的 LXML Etree?

How can I add unescaped text to an LXML Etree in Python?

LXML 的构建器 allows for easily generation of HTML and XML,像这样:

>>>from lxml.builder import E
>>>import lxml.etree
>>>lxml.etree.tostring(E.html('hello'))

b'<html>hello</html>'

但是如果我包含已经在 HTML 中的文本,它会转义尖括号,因为它应该:

>>>lxml.etree.tostring(E.html('<b>Hello</b>'))                                                       
b'<html>&lt;b&gt;Hello&lt;/b&gt;</html>'

那么我怎样才能让它将内部文本视为原始文本 HTML/XML?我想让它在上面的例子中输出 <html><b>Hello</b></html

您可以通过将 html 字符串解析为 lxml etree 对象轻松完成此操作:

In [1]: from lxml.builder import E                                       

In [2]: import lxml.etree                                           

In [3]: lxml.etree.tostring(E.html(lxml.etree.fromstring('<b>Hello</b>')
Out[3]: b'<html><b>Hello</b></html>'