我正在尝试使用 xmltodict 将 XML 内容作为 python 对象进行操作,但是我面临着正确处理 CDATA 的问题。我想我在某处遗漏了一些东西,这是我的代码:
import xmltodict
data = """<node1>
<node2 id='test'><![CDATA[test]]></node2>
<node3 id='test'>test</node3>
</node1>"""
data = xmltodict.parse(data,force_cdata=True, encoding='utf-8')
print data
print xmltodict.unparse(data, pretty=True)
这是输出:
OrderedDict([(u'node1', OrderedDict([(u'node2', OrderedDict([(u'@id', u'test'), ('#text', u'test')])), (u'node3', OrderedDict([(u'@id', u'test'), ('#text', u'test')]))]))])
<?xml version="1.0" encoding="utf-8"?>
<node1>
<node2 id="test">test</node2>
<node3 id="test">test</node3>
</node1>
我们可以在这里看到生成的node2中缺少CDATA,并且node2与node3相同。但是,在输入中,节点是不同的。
问候