Pages : 1
#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
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
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...
xmllint --format file.xml -o file.xml
Désolé
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
Ç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
Totor a écrit :Ç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'
"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
Ouais comme dit Zakhar, ya aussi moyen de mettre en forme en appliquant une feuille de style XSL via `xsltproc'
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
Pages : 1