Utiliser LibXML pour concatener plusieurs fichiers XML [Perl] - Perl - Programmation
Marsh Posté le 10-08-2018 à 11:59:42
Bonjour,
Je réponds sur le premier point:
Il faut indiquer a toString qu'on veut un formattage un peu moins brut de décoffrage. Ceci devrait faire l'affaire:
print $new_doc->toString(1);
Sur ton premier exemple (stdout du code), voici ce qu'on a sans paramètre (équivalent a la valeur 0) avec un script minimaliste (load_xml suivi de print du document) :
Code :
|
et le même avec le paramètre a 1:
Code :
|
A+,
Marsh Posté le 10-08-2018 à 12:04:03
Ah pas mal merci ! Je ne savais pas qu'on pouvait jouer sur cette valeur.
Marsh Posté le 10-08-2018 à 12:49:12
En fait non, bizarrement, ça marche sur le fichier output mais pas sur tes exemples et j'ai pas l'intention de chercher pourquoi.
On va donc faire plus sophistiqué:
Tu mets
use XML::LibXML::PrettyPrint;::PrettyPrint;
après ton use XML::LibXML::PrettyPrint;
tu définis cette variable
my $pp = XML::LibXML::PrettyPrint->new(
element => {
inline => ['node'],
},
indent_string => " ",
);
(par défaut tout sera indenté, sauf l'élément node, et l'indentation sera de deux caractères)
et tu ajoutes la ligne
$pp->pretty_print($new_doc);
juste avant celle avec
print $new_doc->toString;
Et ça ça marche.
Code :
|
donne en sortie
Code :
|
A+,
Marsh Posté le 10-08-2018 à 15:07:31
Bon, pour une version qui fait tout ce que tu demandais:
Code :
|
a mes indentations près, bouffés par le forum, grand dévoreur de tabs.
A+,
Marsh Posté le 10-08-2018 à 15:39:51
C'est parfait Gilou ! Encore merci
Je ne sais pas comment tu as l'idée d'utiliser PrettyPrint mais c'est pas mal
Marsh Posté le 10-08-2018 à 11:06:10
Bonjour,
J'ai un dossier contenant x fichiers XML.
Le but et de concaterner les x fichiers pour ne créer qu'un seul gros fichier XML.
On va dire qu'avec le code ci-dessous j'arrive à concatener mais je n'arrive pas à faire deux choses:
1. ajouter un retour à la ligne après la fermeture de chaque balise.
2. je voudrai rassembler tous les tags ensemble alors que là j'affiche pour chaque XML d'abord son Product, ensuite Series, Episode et VodItem
J'ai donc ajouté 2 exemples et le fichier de sortie désiré pour plus de clarté.
Ça sera plus simple à comprendre je pense qu'un long discours.
Merci d'avance pour vos lumières sur cette demande.
Voici le code
Voici le stdout du code:
exemple1.xml
exemple2.xml
Résultat attendu:
Message édité par Sethenssen le 10-08-2018 à 11:06:30