Gå til innhold

Anbefalte innlegg

Vi skal hente ut flere tags i samme xml-fil, problemet med dette scriptet er at den hopper ut av filen på første treff, dermet får vi ikke ut de gjenværende tags'ene fra samme xml-filen. Er det noen som kan hjelpe meg med dette?

 

#!/usr/bin/perl
use warnings;
use strict;
use XML::Simple;
use Data::Dumper;

my $data; my $xml; my $file; my @files;

# $xml = new XML::Simple(keeproot => 1, searchpath => "/home/hoved/WAAP");

$xml = new XML::Simple;

opendir(DIR, "/home/folder/");
@files = readdir(DIR);
closedir(DIR);

foreach $file (@files){
   next if ($file eq "." or $file eq "..");
   print $file . "\n";
   $data = $xml->XMLin("/home/folder/$file");
if ( $data->{tag1}->{tag2}->{tag3}->{content} )
{
       print "$data->{tag1}->{tag2}->{tag3}->{content}${
   }elsif ( $data->{tag1}->{tag4}->{tag5} ){
       print "$data->{tag1}->{tag4}->{tag5}\n";
   }elsif ( $data->{tag1}->{tag4}->{tag5}->{content} ){
       print "$data->{tag1}->{tag4}->{tag5}->{content}\n"$
   }else{
       print "fant ingenting.\n";
   }
}

 

Her er link til ett bilde der vi kjører scriptet og får HASH-feilmelding

610446.jpeg

 

Hvis det mangler noe info så spør, så skal jeg gi mer.

Lenke til kommentar
Videoannonse
Annonse

Hei

 

først noen tips:

vet ikke hva opendir() er, men antagelig kan du bare si:

foreach my $file ( glob('/home/*.xml') ){

 

- hvis rekkefølgen på elementer i xml filen er viktig (<foo><første/><andre/></foo>), kan XML::Simple gi deg problemer.. been there.. Men er forsåvidt dokumentert så..

 

 

Den hopper ikke egentlig ut. Du spørr bare etter én tag når du bruker if, else.

 

 

Hvis jeg ikke husker feil er $data en vanlig perl struktur, lett å bruke når man har lært det, men vanskelig i starten. Du må bare hente ut alt du vil ha derfra før neste iterasjon av foreach hvor du åpner en ny fil og setter $data til noe annet.

Data::Dumper er din venn.. som i

 

 

# untested 

use Data::Dumper;

#...

print Dumper($data->{tag1});

Endret av gizzlon
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...