首页 > 解决方案 > 使用 CDATA 获取元素的文本

问题描述

说,我有一个元素:

>>> el = etree.XML('<tag><![CDATA[content]]></tag>')
>>> el.text
'content'

我想得到的是<![CDATA[content]]>. 我该怎么办?

标签: pythonxmllxmlcdata

解决方案


当你这样做时el.text,它总是会给你纯文本content

要查看序列化元素,请尝试tostring()

el = etree.XML('<tag><![CDATA[content]]></tag>')
print(etree.tostring(el).decode())

这将打印:

<tag>content</tag>

要保留 CDATA,您需要使用XMLParser()with strip_cdata=False

parser = etree.XMLParser(strip_cdata=False)

el = etree.XML('<tag><![CDATA[content]]></tag>', parser=parser)
print(etree.tostring(el).decode())

这将打印:

<tag><![CDATA[content]]></tag>

这应该足以满足您的“我想在测试中确保内容包含在 CDATA 中”的要求。


推荐阅读