Python feedparser未使用atom/WordPress命名空间?
我正在尝试使用feedparser这个很棒的库来解析WordPress导出的文件,但WordPress不同版本之间的小差异让我很头疼。
在WordPress 2.x版本中,XML输出里没有atom:link标签(可以查看这个without_atom_tags.xml文件)。解析时,带命名空间的元素可以直接使用,没有前缀:
>>> feed = feedparser.parse("without_atom_tags.xml")
>>> print feed.entries[0].comment_status
u'open'
而在WordPress 3.x版本中,XML输出里是有atom:link标签的(可以查看这个with_atom_tags.xml文件),这时你必须在命名空间元素前加上前缀:
>>> feed = feedparser.parse("with_atom_tags.xml")
>>> feed.entries[0].wp_comment_status # <-- Note wp_ prefix
u'open'
>>> feed.entries[0].comment_status
AttributeError: object has no attribute 'comment_status'
有趣的是,如果我在根RSS元素中添加xmlns:atom="http://www.w3.org/2005/Atom",那么前缀就不需要了(可以查看这个with_atom_tags_and_namespace.xml文件)。
我需要解析这些不同格式的文件,但又不想修改XML。请问是feedparser有问题,还是我使用不对?我能否在不写很多复杂条件代码的情况下做到这一点?
相关问题:
1 个回答
0
你能直接在feedparser.py文件中,把缺少的命名空间(atom/wp)添加到支持的命名空间列表里吗?