J'essaye d'employer feedparser (une excellente bibliothèque) pour analyser des dossiers d'exportation de WordPress, et une incohérence (mineure) entre la version de WordPress me cause un mal de tête énorme. WordPress 2.x n'inclut pas de balises atom:link
dans la sortie XML (without_atom_tags.xml). Si on analyse, éléments namespaced sont disponibles sans le préfixe:Feedparser Python n'utilisant pas l'espace de noms atom/WordPress?
>>> feed = feedparser.parse("without_atom_tags.xml")
>>> print feed.entries[0].comment_status
u'open'
Le XML de WordPress 3.x ne contiennentatom:link
balises (with_atom_tags.xml), et vous devez ajouter un préfixe d'espace de noms des éléments:
>>> 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'
Fait intéressant , les préfixes ne sont pas nécessaires si j'ajoute xmlns:atom="http://www.w3.org/2005/Atom"
à l'élément RSS racine (with_atom_tags_and_namespace.xml).
J'ai besoin d'analyser tous ces différents formats sans modifier le XML. Feedparser est cassé, ou est-ce que je le fais mal? Puis-je faire cela sans un tas de code conditionnel?
* Mise à jour: * Il s'avère que l'utilisation de la version réseau de feedparser entraîne la même analyse de tous les éléments (* avec * le préfixe wp_). –