我想用Python的libxml2使用xpath解析XML内容,我跟着this example和that tutorial。 XML文件是:Python:libxml2 xpath返回空列表
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://purl.org/atom/ns#" version="0.3">
<title>Gmail - Inbox for [email protected]</title>
<tagline>New messages in your Gmail Inbox</tagline>
<fullcount>1</fullcount>
<link rel="alternate" href="http://mail.google.com/mail" type="text/html"/>
<modified>2011-05-04T18:56:19Z</modified>
</feed>
此XML存储在一个名为“原子”的文件,我尝试以下方法:
>>> import libxml2
>>> myfile = open('/pathtomyfile/atom', 'r').read()
>>> xmldata = libxml2.parseDoc('myfile')
>>> data.xpathEval('/fullcount')
[]
>>>
现在,你可以看到它返回一个空列表。无论我可以提供xpath,它都会返回一个空列表。但是,如果我用*
通配符,我得到的所有节点的列表:
>>>> data.xpathEval('//*')
[<xmlNode (feed) object at 0xb73862cc>, <xmlNode (title) object at 0xb738650c>, <xmlNode (tagline) object at 0xb73865ec>, <xmlNode (fullcount) object at 0xb738660c>, <xmlNode (link) object at 0xb738662c>, <xmlNode (modified) object at 0xb738664c>]
现在我不明白,从上面的工作实例,为什么XPath不找到“FULLCOUNT”节点或判断任何其他:我使用相同的语法毕竟...
任何想法或建议?谢谢。
为什么不使用lxml? – 2011-05-04 22:20:05
为什么我应该? :)我现在正在查看lxml文档。谢谢。 – Benjamin 2011-05-04 22:35:07
它是libxml2的绑定。我甚至不知道有替代绑定,但lxml非常直观。 – 2011-05-04 22:42:38