【问题标题】:How can I add unescaped text to an LXML Etree in Python?如何在 Python 中将未转义的文本添加到 LXML Etree?
【发布时间】:2020-04-14 15:59:51
【问题描述】:

LXML 的 builder 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?我想让它在上面的例子中输出&lt;html&gt;&lt;b&gt;Hello&lt;/b&gt;&lt;/html

【问题讨论】:

    标签: python lxml elementtree


    【解决方案1】:

    您可以通过将 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>'
    

    【讨论】:

    • 这很酷,我没想到。但这需要我尝试插入的文本是有效的 HTML/XML,不是吗?我怀疑我的数据并非总是如此。
    • @Jonathan 如果它不是有效的 HTML,那么它被 urlencoded 的事实是正确的行为,否则你最终会得到一个格式错误的文档。
    猜你喜欢
    • 2016-04-09
    • 1970-01-01
    • 2016-04-03
    • 2013-01-09
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多