6 votes

Comment puis-je transformer un objet Python en XML ?

Je cherche à convertir un objet Python en données XML. J'ai essayé lxml, mais j'ai finalement dû écrire du code personnalisé pour sauvegarder mon objet au format xml, ce qui n'est pas parfait.

Je cherche quelque chose qui ressemble plus à pyxser. Malheureusement, le code xml de pyxser semble différent de ce dont j'ai besoin.

Par exemple, j'ai ma propre classe Personne

Class Person:
    name = ""
    age = 0
    ids = []

et je veux le convertir en un code xml ressemblant à ceci

<Person>
    <name>Mike</name>
    <age> 25 </age>
    <ids>
        <id>1234</id>
        <id>333333</id>
        <id>999494</id>
   </ids>
</Person>

Je n'ai pas trouvé de méthode dans lxml.objectify qui prend l'objet et retourne le code xml.

2voto

Mark Byers Points 318575

Le mieux est plutôt subjectif et je ne suis pas sûr qu'il soit possible de dire ce qui est le mieux sans en savoir plus sur vos besoins. Cependant, Gnosis a précédemment a été recommandé pour la sérialisation des objets Python en XML, vous pouvez donc commencer par cela.

Depuis la page d'accueil de Gnosis :

Gnosis Utils contient plusieurs modules Python pour le traitement du XML, ainsi que d'autres outils généralement utiles :

  • xml.pickle (sérialise les objets vers/depuis XML)
  • API compatible avec le module pickle standard)
  • xml.objectify (transforme des documents XML arbitraires en objets Python)
  • xml.validity (applique des contraintes de validité XML via DTD ou Schema)
  • xml.indexer (indexation/recherche de texte intégral)
  • beaucoup d'autres...

Une autre option est lxml.objectify .

-5voto

nad2000 Points 1247

Mike,

vous pouvez soit implémenter le rendu des objets en XML :

class Person:
  ...
  def toXml( self):
    print '<Person>'
    print '\t<name>...</name>
    ...
    print '</Person>'

ou vous pouvez transformer la sortie de Gnosis ou pyxser en utilisant XSLT.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X