我正在尝试使用Python解析xml文件,但我有一些可能包含xml数据的标记。例如:
<code>
<?xml version="1.0" encoding="utf-8"?>
</code>
我想写这样的CDATA标签:
<code><![CDATA[
<?xml version="1.0" encoding="utf-8"?>
]]>
</code>
我尝试过(使用lxml):
a = etree.fromstring(data)
for e in a.findall("code"):
e.text = etree.CDATA(etree.tostring(e))
但我明白了:
<code><![CDATA[<code><?xml version="1.0" encoding="utf-8"?></code>]]>
<?xml version="1.0" encoding="utf-8"?>
</code>
答案 0 :(得分:1)
您的替换代码会找到<code>
元素并将其序列化为元素的新文本。您似乎只想包含<code>
元素的 children 。
尝试将e.text
设置为CDATA(e.text)
,而不是将e
序列化。
答案 1 :(得分:0)
(我是在发布后注册的OP)
使用 e.text = etree.CDATA(e.text)
我得到了
<code type="php"><![CDATA[
]]><?php echo $foo;
?>
</code>
代表
<code type="php">
<?php
echo $foo;
?>
</code>