2010-01-13 2 views

Répondre

0

Vous êtes étirer les limites de XML::Simple. Quand vous arrivez au point où vous n'aimez pas exactement ce qu'il fait, il est temps pour autre chose. Qu'est-ce que quelque chose d'autre dépend de votre problème, mais j'aime XML::Twig.

+0

Merci pour le heads-up! – fixxxer

+0

RootName est la réponse - voir le commentaire ci-dessous adamvagyok ... – adamnickerson

+0

Vous pouvez obtenir ce genre de choses avec XML :: Simple, mais mon conseil se tient: à moins qu'il fait exactement ce que vous voulez sans que vous ayez à faire quoi que ce soit, passer à autre chose. –

2

Voir KeepRoot. Vous devriez également envisager d'activer strict mode.

#!/usr/bin/perl 

use strict; use warnings; 

use XML::Simple qw(:strict); 
use Data::Dumper; 

my $x = XMLin(\*DATA, KeepRoot => 1, ForceArray => 1, KeyAttr => ['the']); 

print XMLout($x, KeepRoot => 1, KeyAttr => ['the']); 

__DATA__ 
<this> 
<that the="other">This that and the other</that> 
</this> 

Sortie:

<this> 
    <that the="other">This that and the other</that> 
</this> 
+0

La balise a encapsule maintenant les node.Is racine d'origine il y a un moyen de compléter supprimer la balise ? – fixxxer

0

dans le nouveau fichier xml vous pouvez utiliser experessions régulièrement pour trouver le modèle que vous souhaitez supprimer et remplacer par le modèle que vous voulez, c'est étiquette d'origine.

@ar="xml file"; 
$pat="tag you want to replace"; 
$rep="original tag"; 


foreach $a (@ar) { 
    if ($a =~ s|$pat|$rep|gi; 
    } 

xml fichier nom du manipulateur = @ arr;

+2

Le code semble tronqué. Pouvez-vous vérifier? –

Questions connexes