Comment puis-je convertir XML dans un objet Python?
J'ai besoin de charger un fichier XML et de convertir le contenu dans un orienté objet Python structure. Je veux profiter de cette:
<main>
<object1 attr="name">content</object>
</main>
Et de le transformer en quelque chose comme ceci:
main
main.object1 = "content"
main.object1.attr = "name"
Les données XML ont une structure plus complexe que cela et je ne peux pas coder en dur les noms d'éléments. Les noms d'attribut doivent être recueillies lors de l'analyse et de les utiliser comme des propriétés de l'objet.
Comment puis-je convertir des données XML dans un objet Python?
Vous devez vous connecter pour publier un commentaire.
Il vaut la peine de regarder
lxml.objectiver
.Ou dans l'autre sens pour construire des structures xml:
De sortie:
lxml.objectify.deannotate(order)
etlxml.etree.cleanup_namespaces(order)
.Je l'ai recommandé ce plus d'une fois aujourd'hui, mais essayez Belle Soupe (easy_install BeautifulSoup).
<element />
, par exemple<icon data="/ig/images/weather/partly_cloudy.gif"/>
- et ceux qui sont en abondance dans xml 🙁David Mertz du la gnose.xml.objectiver semble le faire pour vous. La Documentation est un peu difficile à trouver, mais il y a quelques IBM articles, y compris les cette une.
La création de xml à partir d'objets de cette façon, c'est une autre affaire, bien que.
Comment à ce sujet
http://evanjones.ca/software/simplexmlparse.html
#
sortie
Il y a trois analyseurs XML pour python: xml.dom.minidom, elementree, et BeautifulSoup.
De l'OMI, BeautifulSoup est de loin le meilleur.
http://www.crummy.com/software/BeautifulSoup/
<element/>
- qui est ok pour le code HTML, car ceux qui ne sont pas populaires, il ySi googler, autour d'un générateur de code ne fonctionne pas, vous pouvez écrire votre propre qui utilise le XML en entrée et sorties des objets dans la langue de votre choix.
Il n'est pas très difficile, cependant, le processus en trois étapes de l'analyse XML, Générer du Code, Compiler/Exécuter le Script ne faire du débogage d'un peu plus difficile.