在Python中使用Elementtree解析RSS

7
如何使用Python中的Elementtree搜索XML中特定命名空间的标签?
我有一个类似以下的XML/RSS文档:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:wp="http://wordpress.org/export/1.0/"
>
<channel>
    <title>sometitle</title>
    <pubDate>Tue, 28 Aug 2012 22:36:02 +0000</pubDate>
    <generator>http://wordpress.org/?v=2.5.1</generator>
    <language>en</language>
    <wp:wxr_version>1.0</wp:wxr_version>
    <wp:category><wp:category_nicename>apache</wp:category_nicename><wp:category_parent></wp:category_parent><wp:cat_name><![CDATA[Apache]]></wp:cat_name></wp:category>
</channel>
</rss>

但是当我尝试通过以下方式查找所有“wp:category”标签时:
import xml.etree.ElementTree as xml
tree = xml.parse(fn)
doc = tree.getroot()
categories = doc.findall('channel/wp:category')

I get the error:

SyntaxError: prefix 'wp' not found in prefix map

寻找任何非命名空间特定字段都可以正常工作。我做错了什么?
1个回答

3

2
这没有任何意义。命名空间前缀在父级<rss>标记中定义。我不应该预解析我的RSS文档,只是为了将命名空间提供给我的RSS解析器... - Cerin
2
我不是在和你争论,只是想说这是我解决它的方法。 - Tom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接