2009-09-30 8 views
0

Certains peuvent recommander un sérialiseur XML centré sur un élément ou un attribut et n'utilisant pas de paires clé-valeur.Sérialiseurs XML Python

Par exemple, GAE db.Model a une fonction to_xml() mais il écrit comme ceci:

<property name="firstname" type="string">John</property> 
    <property name="lastname" type="string">Doe</property> 
    <property name="city" type="string">Dallas</property> 
    <property name="dateTimeCreated" type="gd:when">2009-09-30 19:45:45.975270</property> 

D'après ce que je me souviens, ce sont beaucoup plus difficiles à la carte dans les outils XSLT que de simples éléments/attributs comme ceci:

SORTIE DÉSIRÉ

<firstname>John</firstname> 
    <lastname>Doe</lastname> 
    <city>Dallas</city> 
    <dateTimeCreated type="gd:when">2009-09-30 19:45:45.975270</dateTimeCreated> 

Je viens d'essayer la lib Gnose, et ma première tentative a travaillé, mais aussi créé des paires de valeurs nom quelque chose comme ceci:

<attr name="__coredata__" type="dict" id="4760164835402068688" > 
    <entry> 
     <key type="string">firstname</key> 
     <val type="string">John</val> 
    </entry> 
    <entry> 
     <key type="string">lastname</key> 
     <val type="string">Doe</val> 
    </entry> 
    etc... 

Merci,

Neal Walters

+0

J'ai fini par écrire du code personnalisé en utilisant l'inspection (aka reflection). Ce n'était vraiment pas si difficile. – NealWalters

Répondre

2

pyxslt.serialize semble plus proche de vos spécifications, mais pas une carte 100% (par exemple, il ne comptabilise pas le type - tourne juste tout en cordes) . Pourrait être une bonne base d'où personnaliser (peut-être par copier/coller/modifier, si elle n'offre pas tous les crochets dont vous avez besoin pour une personnalisation plus propre).

+0

Regardé cela, semble exiger libxml2 (http://xmlsoft.org/) qui dépend de C, et ne peut donc pas utiliser avec GAE. – NealWalters

Questions connexes