Я пытаюсь использовать feedparser (отличная библиотека) для разбора экспортных файлов WordPress и (незначительное) несоответствие между Версия WordPress вызывает у меня огромную головную боль.
WordPress 2.x не включает теги atom:link
в вывод XML (without_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 сломался или я что-то не так делаю? Могу ли я сделать это без кучи неприятного условного кода?