2014-02-14 113 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解析器(我不知道任何),或者自己寫一些東西...