XML::DOM Comment avoir une belle indentation? [Résolu][Perl] - Perl - Programmation
Marsh Posté le 22-12-2013 à 15:00:44
Bonjour,
Il va te falloir utiliser un module un peu plus complet, heureusement, il n'y a presque pas de code à changer.
Si tu remplaces XML::DOM par XML::LibXML dans ton code:
use XML::DOM; --> use XML::LibXML; |
ça fait la même chose que ton code actuel, sauf que avec XML::LibXML, la méthode toString() a un fonctionnement variable en fonction du paramètre que tu lui passe, et si tu fais en plus la modification suivante pour lui passer une valeur de 1 comme paramètre:
print $root->toString(), "\n"; --> print $root->toString(1), "\n"; |
tu vas avoir la mise en ligne et l'indentation, c'est magique...
Et tu peux même faire appel à XML::LibXML::PrettyPrint si tu veux contrôler finement l'indentation.
A+,
Marsh Posté le 22-12-2013 à 15:06:51
Note: Si tu n'as pas la possibilité d'utiliser XML::LibXML, c'est assez mort, XML::DOM n'est pas prévu pour cela, la seule possibilité pratique (a part tout réécrire en gérant un parcours récursif de ton arbre DOM, ce qui est la réinvention de la roue et est relativement lourd) est d'écrire dans une variable le fichier xml puis de reparser avec un module qui permette de faire du pretty print (il serait surprenant que tu n'aies pas XML::Tidy d'installé par exemple).
A+,
Marsh Posté le 22-12-2013 à 15:33:30
Merci Gilou,
Je vais enquiquiner mes admins sys pour qu'ils m'installent XML::LibXML
Réinventer la roue n'est effectivement pas prévu au programme
Marsh Posté le 23-12-2013 à 19:38:03
Oui, surtout que tu as déjà des modules pas si courants sur ton serveur: Date::Format est pas dans la liste des modules pré-compilés de ActivePerl par exemple.
Donc tes admins doivent savoir gérer cela.
A+,
Marsh Posté le 22-12-2013 à 12:41:13
Bonjour,
Mon but est de créer un fichier XML de A à Z
Je n'ai que XML::DOM d'installé sur les serveurs.
Je vais donc partir d'un exemple que j'ai récupéré du Net mais le problème est que le résultat ne s'affiche que sur une seule ligne.
Comment faire pour avoir une belle indentation?
Voici le code:
Message édité par Sethenssen le 22-12-2013 à 15:34:14