python - 使用 CDATA 获取元素的文本
问题描述
说,我有一个元素:
>>> el = etree.XML('<tag><![CDATA[content]]></tag>')
>>> el.text
'content'
我想得到的是<![CDATA[content]]>
. 我该怎么办?
解决方案
当你这样做时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 中”的要求。
推荐阅读
- common-lisp - 为什么在 Common Lisp 中无法使用这种方法将列表变为第一个元素?
- laravel - 如何从laravel中的关系表中获取特定值
- python - 列表未更新并且似乎循环我的 Python 代码以进行 pcap 分析
- functional-programming - 如示例中所示,如何创建一个接受 N 个数字并生成具有这些元素编号的列表列表的函数?
- google-chrome - Firefox 和 Chrome 阻止低级全局键盘钩子
- node.js - 如何在节点中安排访问令牌的更新(使用刷新令牌)?(请检查答案。)
- python - 向 pyqtSignal 发出未知数量的参数
- c# - .NET Core 中的 RequestContext 等效项
- virtualbox - Ubuntu下的VirtualBox:FreeDOS,如何通过复制到C:或D:来访问d / l程序?
- postgis - PostGIS 拓扑异常