< 和 > 还是转义了 解决一下
时间: 2023-10-25 22:06:38 浏览: 143
如果需要在XML文件中输出不被转义的CDATA节点,可以使用lxml库中的etree模块,并在创建CDATA节点时,将其直接添加到Element对象中,而不是作为文本内容赋值。下面是一个示例代码:
```python
from lxml import etree
root = etree.Element("root")
cdata = etree.CDATA("This is CDATA!")
root.append(cdata)
xml_str = etree.tostring(root, encoding='utf-8', xml_declaration=True, pretty_print=True)
with open('output.xml', 'wb') as f:
f.write(xml_str)
```
在这个示例中,我们使用etree.CDATA()方法创建了一个CDATA节点,并将其直接添加到Element对象中。然后,我们使用etree.tostring()方法将XML文档转换为字符串,并指定文件名、编码方式和XML声明。最后,我们将字符串写入名为"output.xml"的文件中。
运行这段代码后,生成的XML文件中就会包含不被转义的CDATA节点:
```xml
<?xml version='1.0' encoding='utf-8'?>
<root>
<![CDATA[This is CDATA!]]>
</root>
```
需要注意的是,使用这种方法创建CDATA节点时,CDATA节点内的内容不应包含"]]>",否则可能会导致XML解析错误。如果CDATA内容中确实包含这个字符串,可以将其拆成两部分输出,或者使用其他方法避免这个问题。
阅读全文