Я пытаюсь использовать feedparser (отличная библиотека) для анализа файлов экспорта WordPress, а (незначительная) несогласованность между версией WordPress вызывает у меня огромную головную боль.Python feedparser не использует пространство имен Atom/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 сломанным, или я делаю это неправильно? Могу ли я сделать это без кучи неприятного условного кода?
* Обновление: * Выключается с использованием версии trunk feedparser, заставляет все элементы разбираться одинаково (* с * префиксом wp_). –