Formater un fichier xml en python

Formater un fichier xml en python - Python - Programmation

Marsh Posté le 07-12-2012 à 14:28:07    

Salut
 
J'essaye de modifier des attributs d'nu fichier xml en python.
Jusque là, j'y arrive sans soucis en utilisant le module minidom.
 
Le problème provient de la rééecriture du ficheir xml modifié. Je m'explique.
 
Le fichier d'entrée est quelquefois modifié à la main. Du coup, un certain formatage a été utilisé (alignement des attributs en particulier)
 
L'écriture du fichier de sortie avec la commande  

Code :
  1. print mondoc.toxml()


supprime ce formatage et sépare les infos avec 1 seul espace. Du coup, le fichier est moins "lisible" par un être humain.
 
Est-ce qu'il y aurait un moyen pour :
- soit conserver le formatage d'origine (j'y crois pas trop)
- soit paramétrer un certain formatage.
 
Exemple d'une données d'entrée:
 

Code :
  1. <TAG1>
  2.    <TITI                  value="val1"/>
  3.    <TATA                  value="val2"/>
  4.    <TUTU                  value="val3"/>
  5. </TAG1>


 
si je veux changer val1 par valeur1 sur TITI et que je réécris le fichier, j'obtiens en sortie:

Code :
  1. <TAG1>
  2.    <TITI value="valeur1"/>
  3.    <TATA value="val2"/>
  4.    <TUTU value="val3"/>
  5. </TAG1>


 
:jap: d'avance de votre aide


---------------
Achats/Ventes
Reply

Marsh Posté le 07-12-2012 à 14:28:07   

Reply

Marsh Posté le 07-12-2012 à 15:09:30    

http://docs.python.org/2/library/x [...] oprettyxml
 
rftm :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 07-12-2012 à 15:17:27    

merci mais ça je l'ai déjà lu.
Si c'est pour le paramètre "indent" que tu me files ce lien (sans aucune explication par ailleurs), sache que ce indent ne gère que les séparateurs en début de ligne.
Exemple :

Code :
  1. print mondoc.toprettyxml("X" )
  2. <TAG1>
  3. X<TITI value="val1"/>
  4. X<TATA value="val2"/>
  5. X<TUTU value="val3"/>
  6. </TAG1>


 
 

Spoiler :

rtfq  :kaola:

Message cité 1 fois
Message édité par jay31790 le 07-12-2012 à 15:18:58

---------------
Achats/Ventes
Reply

Marsh Posté le 07-12-2012 à 15:33:28    

jay31790 a écrit :

merci mais ça je l'ai déjà lu.


Bah c'est la seule méthode de pretty-printing de minidom à ce que je sache [:cosmoschtroumpf]

jay31790 a écrit :

Si c'est pour le paramètre "indent" que tu me files ce lien


S'paske tu demandes une méthode de pretty-printing, et c'est une méthode de pretty-printing [:cosmoschtroumpf]

jay31790 a écrit :

(sans aucune explication par ailleurs)


Je vois mal de quelle explication il y aurait besoin [:cosmoschtroumpf]

jay31790 a écrit :

sache que ce indent ne gère que les séparateurs en début de ligne.


En fin de ligne aussi [:cosmoschtroumpf]

 

Mais effectivement si ce que tu voulais c'était d'avoir en sortie le même truc bizarre avec de grands espaces au sein des nodes, j'ai jamais vu un outil automatisé qui savait sortir une horreur pareille.

Message cité 1 fois
Message édité par masklinn le 07-12-2012 à 15:34:13

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 07-12-2012 à 15:35:30    

masklinn a écrit :

Mais effectivement si ce que tu voulais c'était d'avoir en sortie le même truc bizarre avec de grands espaces au sein des nodes, j'ai jamais vu un outil automatisé qui savait sortir une horreur pareille.


 
Oui, c'est bien cela que je veux  :D


---------------
Achats/Ventes
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed