2014-02-14 42 views
0

我尝试解析一些原子提要。例如。python feedparser自定义命名空间

>>> feedparser.parse(""" 
    <?xml version="1.0" encoding="utf-8"?> 
    <feed xmlns:a="http://example.com"> 
     <entry> 
     <a:name>123</a:name> 
     <a:name xml:lang="es"></a:name> 
     </entry> 
    </feed> 
""").entries[0] 

{u'a_name': {'xml:lang': u'es'}} 

我想,而不是接受这样的事情:

{u'a_name': '123'} 

{u'a_name': ['123', '']} 

古玩的事情,如果你改变nametitle - feedparser工作正常。

但我需要从其他名称空间解析自定义标签。

回答

1

rfc4287

氧原子:entry元素必须只包含一个原子:title元素。

没有提及name元素作为entry的子元素。

6.3节说

当未知的外国标记遇到的 原子的孩子:入口,原子:饲料,或者一个人结构,凌动处理器可 旁路的标记和任何文字内容,必须由于标记的存在,不要更改它们的 行为。

FeedParser是一个通用的解析器,它可以处理许多不同类型的提要,因此可能不支持各种细节或更高级的用法。特别是,它不支持这个功能(快速浏览源代码似乎验证了这一点)。

换句话说,您需要修改FeedParser,找到其他的ATOM解析器(我不知道任何),或者自己写一些东西...