python – 在lxml中相当于Beautiful Soup的renderContents()方法?

在lxml中是否有相当于Beautiful Soup的tag.renderContents()方法?

我已经尝试过使用element.text,但是它不会呈现子标记,也不会呈现’.join(元素中的子项为etree.tostring(child)),但这不会呈现子文本.我能找到的最接近的是etree.tostring(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'
>>>

阿里.

上一篇:如何使用lxml解析包含前缀但没有名称空间声明的XML?


下一篇:如何使用xpath处理添加元素及其父元素