Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/09/2008, à 10:39

®om

Formater XML

Salut,

Connaissez-vous un outil en ligne de commande permettant de "formater" du xml? Un peu à la manière du formateur d'eclipse.

Par exemple, si j'ai un fichier :

   <balise              text = "value"               >                   <a>
                     </a>    </   balise >

Je voudrais qu'il le transforme en :

<balise text="value">
    <a>
    </a>
</balise>

Ce XML peut également contenur des :

<![CDATA[
		                		
]]>

Merci d'avance.

Hors ligne

#2 Le 19/09/2008, à 10:43

nicolas66

Re : Formater XML

xmllint --format file.xml

"The computer was born to solve problems that did not exist before." (B. Gates)

Hors ligne

#3 Le 19/09/2008, à 11:55

®om

Re : Formater XML

Merci, génial smile

Encore une petite question, comment le faire formater le fichier "sur place"?
Car là il le fait par défaut sur stdout, on peut spécifier un fichier, mais comment le faire "sur  place" (sans passer par un autre fichier)?

Hors ligne

#4 Le 19/09/2008, à 11:59

®om

Re : Formater XML

tiky a écrit :
xmllint --format file.xml > file.xml

Ouais mais non, là ça va planter, tu écrases l'entrée par la sortie avant même de l'avoir lue.

Hors ligne

#5 Le 19/09/2008, à 12:04

tiky

Re : Formater XML

Je viens de m'en rendre compte, heureusement que tu as vu... smile

xmllint --format file.xml -o file.xml

Désolé wink


Conseil d'expert: il vous faut un dentifrice adapté...

Hors ligne

#6 Le 19/09/2008, à 12:06

Totor

Re : Formater XML

Salut,

As-tu essayé l'option --output ?

EDIT : même réponse que tiky ...

Dernière modification par Totor (Le 19/09/2008, à 12:08)


-- Lucid Lynx --

Hors ligne

#7 Le 19/09/2008, à 12:10

®om

Re : Formater XML

Totor a écrit :

Salut,

As-tu essayé l'option --output ?

EDIT : même réponse que tiky ...

Ça marche sur un petit fichier.

Selon l'implémentation de xmllint, ça peut planter sur de gros fichiers (plus gros que le buffer).

Ça marcherait si xmllint lisait d'abord l'intégralité du fichier d'entrée avant d'écrire la première ligne sur la sortie (s'il utilise un parseur DOM par ex)...

Hors ligne

#8 Le 19/09/2008, à 12:54

Zakhar

Re : Formater XML

Sinon tu utilises un parser XSL avec une un code du genre :

<xsl:template match="/">
  <xsl:copy-of select="."/>
</xsl:template>

Tu peux ensuite raffiner selon que tu veux indenté ou pas avec la clause output, et raffiner le truc selon que tu veux :
- les commentaires
- les Processing Instructions
- quid des namespaces, etc...

XSL fonctionnera quelle que soit la taille de ton fichier d'entrée (aux limites physiques de la machine !).
Quant à éditer "sur place"... il faudra en passer plutôt par une copie, car XSL ne le permet pas dans la norme, même si ça peut fonctionner "par hasard".

Dernière modification par Zakhar (Le 19/09/2008, à 12:56)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#9 Le 19/09/2008, à 13:42

Totor

Re : Formater XML

®om a écrit :
Totor a écrit :

Salut,

As-tu essayé l'option --output ?

EDIT : même réponse que tiky ...

Ça marche sur un petit fichier.

Selon l'implémentation de xmllint, ça peut planter sur de gros fichiers (plus gros que le buffer).

Ça marcherait si xmllint lisait d'abord l'intégralité du fichier d'entrée avant d'écrire la première ligne sur la sortie (s'il utilise un parseur DOM par ex)...

Même si tu utilises l'option --memory ?


-- Lucid Lynx --

Hors ligne

#10 Le 19/09/2008, à 18:37

nicolas66

Re : Formater XML

Ouais comme dit Zakhar, ya aussi moyen de mettre en forme en appliquant une feuille de style XSL via `xsltproc' smile


"The computer was born to solve problems that did not exist before." (B. Gates)

Hors ligne

#11 Le 19/09/2008, à 19:20

aleph

Re : Formater XML

Ce n'est pas mon rayon, mais je sait que l'on trouve ce genre d'outil pour Python (très habile et élégant pour tout ce qui touche au "manierment" de texte).

Google sans trop me fouler me donne par ex. http://www.searjeant.net/?p=45

#12 Le 23/09/2008, à 14:17

Zakhar

Re : Formater XML

nicolas66 a écrit :

Ouais comme dit Zakhar, ya aussi moyen de mettre en forme en appliquant une feuille de style XSL via `xsltproc' smile

Oui, ou l'excellent Saxon, si tu veux du XLST2.0

(Il te faudra une JVM pour le faire tourner, mais ça c'est facile, c'est dans les dépôts !)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne