Я пытаюсь использовать feedparser (отличная библиотека) для анализа файлов экспорта WordPress, и (незначительное) несоответствие между версиями WordPress вызывает у меня огромную головную боль.
WordPress2.x не включает atom:link
теги в вывод XML ( без_atom_tags.xml ).При анализе элементы пространства имен доступны без префикса:
>>> feed = feedparser.parse("without_atom_tags.xml")
>>> print feed.entries[0].comment_status
u'open'
XML из WordPress 3.x содержит теги 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'
Интересно, что префиксы не нужны, если я добавлю xmlns:atom="http://www.w3.org/2005/Atom"
к корневому элементу RSS ( with_atom_tags_and_namespace.xml ).
Мне нужно проанализировать все эти разные форматы без изменения XML.Не работает feedparser или я делаю это неправильно?Могу ли я сделать это без связки неприятного условного кода?