最近想用python写一个处理RSS的程序,其中有很多节点中的文本是属于CDATA,结果发现minidom在解析该节点时将空格解析为textnode。在google上搜了很久也没发现有问题,再次贴出来提醒大家,以后遇见问题,估计就能搜到这篇文章了。我的python是2.5.2。 xml内容如下:
<?xml version="1.0" ?> <booklist> <book> <name><![CDATA[能被正常解析]]></name> <price>55</price> </book> <book> <name> <![CDATA[不能被正常解析]]> </name> <price>66</price> </book> </booklist>python代码如下:
import xml.dom.minidom
dom = xml.dom.minidom.parse("book.xml")
nodes = dom.getElementsByTagName("name")
for n in nodes:
print n.firstChild.data
第一条数据就可以被正常读出,第二条读出来是一些空格,开始是以为字符编码的问题,折腾了很久才发现是因为这个,<![CDATA[能被正常解析]]>必须紧挨着标签,如果有空格或者换行就解析为textnode。