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
33
34
35
36
#!/usr/bin/perl
# Module verwenden
use XML::Simple;
use Data::Dumper;
# Bearbeitungsdatei definieren
my $path = "dump.xml";
# Bearbeitungsdatei einlesen und nach Regeln aufbauen um diese dann in while einzeln anzusprechen und abzufragen
my $data = XMLin('dump.xml', KeyAttr => ['Rule_Number']);
# Anzahl der Regeln bestimmen fuer while Funktion
my $tmp = XMLin('dump.xml');
my $count = @{$tmp->{startpunkt}->{rule}->{rule}};
# Zaehlerstart bei 1
my $i = 1;
# WHILE LOOP
while ($i <= $count) {
if ($data->{startpunkt}->{rule}->{rule}->{$i}->{src}->{members}->{reference}) {
print "Quelle: ", $data->{startpunkt}->{rule}->{rule}->{$i}->{src}->{members}->{reference}->{Name}, "\n";
}
elsif ($data->{startpunkt}->{rule}->{rule}->{$i}->{src}->{compound}->{compound}) {
print "Quelle: ", $data->{startpunkt}->{rule}->{rule}->{$i}->{src}->{compound}->{compound}->{Name}, "\n";
}
if ($data->{startpunkt}->{rule}->{rule}->{$i}->{dst}->{members}->{reference}) {
print "Ziel: ", $data->{startpunkt}->{rule}->{rule}->{$i}->{dst}->{members}->{reference}->{Name}, "\n";
}
elsif ($data->{startpunkt}->{rule}->{rule}->{$i}->{dst}->{compound}->{compound}) {
print "Ziel: ", $data->{startpunkt}->{rule}->{rule}->{$i}->{dst}->{compound}->{compound}->{Name}, "\n";
}
print "\n";
}
$i ++; # INCREMENT THE VARIABLE EACH TIME
}
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
33
34
35
36
37
38
39
40
41
#!/usr/bin/perl
# Module verwenden
use XML::Simple;
use Data::Dumper;
# Bearbeitungsdatei definieren
my $path = "dump.xml";
# Bearbeitungsdatei einlesen und nach Regeln aufbauen um diese dann in while einzeln anzusprechen und abzufragen
my $data = XMLin('dump.xml', KeyAttr => ['Rule_Number']);
# Anzahl der Regeln bestimmen fuer while Funktion
my $tmp = XMLin('dump.xml');
my $count = @{$tmp->{fw_policie}->{rule}->{rule}};
# Zaehlerstart bei 1
my $i = 1;
# WHILE LOOP
while ($i <= $count) {
if ($data->{fw_policie}->{rule}->{rule}->{$i}->{src}->{members}->{reference}) {
print "Quelle: ", $data->{fw_policie}->{rule}->{rule}->{$i}->{src}->{members}->{reference}->{Name}, "\n";
}
elsif ($data->{fw_policie}->{rule}->{rule}->{$i}->{src}->{compound}->{compound}) {
print "Quelle: ", $data->{fw_policie}->{rule}->{rule}->{$i}->{src}->{compound}->{compound}->{Name}, "\n";
}
if ($data->{fw_policie}->{rule}->{rule}->{$i}->{dst}->{members}->{reference}) {
print "Ziel: ", $data->{fw_policie}->{rule}->{rule}->{$i}->{dst}->{members}->{reference}->{Name}, "\n";
}
elsif ($data->{fw_policie}->{rule}->{rule}->{$i}->{dst}->{compound}->{compound}) {
print "Ziel: ", $data->{fw_policie}->{rule}->{rule}->{$i}->{dst}->{compound}->{compound}->{Name}, "\n";
}
print "\n";
$i ++; # INCREMENT THE VARIABLE EACH TIME
}
und das XML als attachment...
Vielen Dank nochmal im Voraus.
schnerd
Guest schnerdIch bleibe jetzt an der Stelle hängen, wo unter Quelle->members->reference zwei Einträge stehen. Kann mir da bitte bitte jemand helfen?
print "Quelle: ", $data->{startpunkt}->{rule}->{rule}->{$i}->{src}->{members}->{reference}->{Name}, "\n";
1 2 3 4
my $refs = $data->{startpunkt}->{rule}->{rule}->{$i}->{src}->{members}->{reference}; for my $ref (@$refs) { print "Quelle: $ref->{Name}\n"; }
my $xmlpath = "\$data->{fw_policie}->{rule}->{rule}->{\$i}";
2012-07-20T08:49:51 schnerdDDas Problem am ForceArray ist, dass ich dann mit $i nicht mehr durch die einzelnen XML-Einträge laufen kann. Ich muss diese leider von 1 bis $count durchwandern, da diese eine festgelegte Reihenfolge aufweisen.
QuoteWas die Variable wegen einfacher Lesbarkeit angeht, das hab ich versucht, ich quote irgendwas falsch aus
Code: (dl )my $xmlpath = "\$data->{fw_policie}->{rule}->{rule}->{\$i}";
1 2 3 4 5 6 7
if ($data->{startpunkt}->{rule}->{rule}->{$i}->{src}->{members}->{reference}) { print "Quelle: ", $data->{startpunkt}->{rule}->{rule}->{$i}->{src}->{members}->{reference}->{Name}, "\n"; } elsif ($data->{startpunkt}->{rule}->{rule}->{$i}->{src}->{compound}->{compound}) { print "Quelle: ", $data->{startpunkt}->{rule}->{rule}->{$i}->{src}->{compound}->{compound}->{Name}, "\n"; } ...
1 2 3 4 5 6 7 8
my $item = $data->{startpunkt}->{rule}->{rule}->{$i}; if ($item->{$i}->{src}->{members}->{reference}) { print "Quelle: ", $item->{src}->{members}->{reference}->{Name}, "\n"; } elsif ($item->{src}->{compound}->{compound}) { print "Quelle: ", $item->{src}->{compound}->{compound}->{Name}, "\n"; } ...
if ($item->{$i}->{src}->{members}->{reference})
if ($item->{$i}{src}{members}{reference})