python - 等效于 lxml 中 Beautiful Soup 的 renderContents() 方法?

标签 python xml rendering beautifulsoup lxml

在 lxml 中是否有与 Beautiful Soup 的 tag.renderContents() 方法等效的方法?

我试过使用 element.text,但它不会呈现子标签,以及 ''.join(etree.tostring(child) for child in element) ,但这不会呈现子文本。我能找到的最接近的是 etree.tostring(element),但它呈现了我不想要的 element 的开始和结束标记。

我是否忽略了另一种方法(或实现此目的的替代方法)?

最佳答案

您的最初想法已基本完成。 element.text 为您提供元素的第一个文本子元素,您的列表理解为您提供其他所有内容。如果将两个字符串连接在一起,就会得到您要查找的内容:

>>> xmlstr = "<sec>header <p>para 0</p> text <p>para 1</p> footer</sec>"
>>> element = etree.fromstring(xmlstr)
>>>
>>> element.text + "".join(map (etree.tostring, element))
'header <p>para 0</p> text <p>para 1</p> footer'
>>>

阿里。

关于python - 等效于 lxml 中 Beautiful Soup 的 renderContents() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2028270/

相关文章:

c++ - 渲染大量立方体的剔除技术

css - Chrome 的重新计算样式事件涉及什么?

python - 正则表达式不获取转义引号

python - 标签 python html

python - 从数据框中删除具有特定值的连续重复项

python - 如何合并 Pandas 中的列?

未找到 Android 数据绑定(bind)属性

c - Vulkan - 同步对单个缓冲区的访问

java - 无法使用 JAXB 解析 XML 响应 - IndexOutOfBoundsException

java - 增强了(或 'for each' )循环迭代到它刚刚删除的元素 - 抛出错误