J'utilise XML::Simple pour modifier un fichier XML. Après quoi les données mises à jour sont envoyées à un nouveau fichier XML. Mais cette procédure produit <opt></opt>
étiquette à ajouter et l'étiquette parent d'origine est perdue. Je veux remplacer <opt>
par le nom de l'étiquette d'origine. Comment je fais ça?Comment puis-je remplacer la balise <opt> dans XML :: Simple avec le nom de balise d'origine?
Répondre
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.
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>
La balise
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;
Le code semble tronqué. Pouvez-vous vérifier? –
Vous pouvez également essayer de rechercher sur l'option rootname. Voir aussi:
Ceci est la bonne réponse - juste quand par moi-même ... – adamnickerson
- 1. balise XML qui signifie
- 2. Remplacer le contenu d'une balise HTML par l'analyse XML PHP
- 3. Regex pour remplacer la balise tr avec la balise n'importe où dans le fichier html
- 4. Suppression de la balise xml avec regex
- 5. Validation d'une balise XML par balise
- 6. Ajouter une balise <Script ... /> dans la balise <Head ... /> dans ServerControl (ASP.NET)?
- 7. Insérer une balise <? Xml-stylesheet avec xsl
- 8. Remplacer balise form de asp.net
- 9. comment utiliser le nom variable balise image
- 10. Remplacer la balise XmlSlurper par du code XML arbitraire
- 11. Comment remplacer la balise HTML regex dans SQL Server?
- 12. Créer une balise <img> dépasser la balise <body> dans css
- 13. espaces de noms XML multiples dans la balise avec LXML
- 14. Afficher <returns> balise xml dans Visual Studio IntelliSense
- 15. Remplacer la Une étiquette avec la toute autre balise
- 16. jQuery: moyen le plus simple d'enrouler une balise d'image avec une balise d'ancrage A
- 17. lecture d'un nom de balise d'un objet IXMLDOMDocument2 dans Delphi
- 18. XML - XSLT Transformation - production balise spéciale « <? ... ?> »
- 19. Utilisation de Javascript pour remplacer le texte dans la balise HTML avec innerHTML et les fonctions
- 20. WebMethod renvoie en tant que chaîne (sans balise <? Xml)
- 21. simple balise ne peut pas intrepret attribut
- 22. XML DOM parsing br balise
- 23. Afficher la présence d'une balise <script> dans TinyMCE
- 24. <img> Échec de la balise dans l'application MVC2
- 25. Comment puis-je récupérer des attributs de balise avec XML :: Simple?
- 26. Comment choisir la balise xml interne lors de la sérialisation d'une liste <string>?
- 27. Comment récupérer les attributs de la balise xml en Python?
- 28. Sélection nom de classe d'une balise span
- 29. Essayer de remplacer le contenu d'une balise <script> à l'aide de Javascript
- 30. Comment empêcher Java XML Transformer utilisant la méthode "HTML" d'ajouter une balise <META>?
Merci pour le heads-up! – fixxxer
RootName est la réponse - voir le commentaire ci-dessous adamvagyok ... – adamnickerson
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. –