Thread XML-Parser
(15 answers)
Opened by Henri at 2015-04-01 00:25
Hallo Leute,
ich möchte hier ein XML-parser in Perl implementiert. meine XML-file sieht so aus: mit der folgenden XML-Name: Compute_sys.xml in computer gespeichert Code (xml): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 <?xml version="1.0" encoding="UTF-8"?> <Profile origin="get" version="2.1" date="2013.05.20"> <Catalog id="sys" version="2.1"> <Parameter name="prim" value="2"/> <Parameter name="second" value="3"/> <Parameter name="copy" value="4"/> <Parameter name="force" value="1"/> <Parameter name="always" value="0"/> <Parameter name="type" value="5" Type="False"/> <Parameter name="memory" value="allow"/> </Catalog> </profile> ich möchte dass bei der Ausgabe meines Perl-Codes ein Teil der XML-Name und zwar "Compute" dans alle name und value meine XML-File.Habe ich mir etwas (unter) geschrieben. leider klappt es nicht, konnte jemand hier mir helfen? Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #!/usr/bin/perl use strict; use warnings; use XML::Simple; my $parser = XML::Simple->new( KeepRoot => 1 ); # Création du fichier résultat my $FichierResulat = 'resultat.txt'; open( my $FhResultat, '>', $FichierResulat ) or die("Impossible d'ouvrir le fichier $FichierResulat\n$!"); my $doc = $parser->XMLin('compute_sys.xml'); # Tout le fichier XML est dans $doc sous forme d'arbre foreach my $Catalog (@{ $doc -> {Catalog}->{name}}){ print {$FhResultat} ""; print {$FhResultat} str_if ($Catalog->{name}); print {$FhResultat} ""; print {$FhResultat} str_if ($Catalog->{value}); } close($FhResultat); sub is_array { my ($var) = @_; return ( ref($var) eq 'ARRAY' ); } sub str_if { my ( $str, $default ) = @_; return $default unless $str; return $str; } modedit Editiert von pq: code-tags hinzugefügt Last edited: 2015-04-01 00:32:58 +0200 (CEST) |