Thread Xml Die Werte einzeln auslesen (14 answers)
Opened by Arenas at 2015-06-14 11:26

Linuxer
 2015-06-16 21:13
#181356 #181356
User since
2006-01-27
3869 Artikel
HausmeisterIn

user image
Vorab: Ich habe keine große Erfahrung mit XML und dessen Verarbeitung mit den verschiedenen Modulen. Meine Erfahrung beschränkt sich auf ein paar Forenbeiträge wie Deiner, in denen ich versucht habe, zu helfen.

Ich habe folgenden Code erstellt:

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
33
34
35
36
37
38
39
40
41
42
43
#! perl
use strict;
use warnings;

use v5.010.000;                         # enable "say" and other stuff

use XML::Twig::XPath;
use Data::Dumper;                       # for checking data structures

my $t = XML::Twig->new(
        pretty_print => 'indented',
        twig_roots => { 'work' => \&fetch },
);



sub fetch {
        my ( $t, $work ) = @_;
        my %data;

        # limit actions to "<work eu=...>"
        if ( exists $work->{att}->{eu} ) {
                # hopefully only one root within "<work ...>"
                my $root = $work->first_child('root');
        
                # save attribute data in hash %data
                %data = %{ $root->{att} };

                # work with hash %data
                do_your_math( %data );
        }
}

sub do_your_math {
    my %data = @_;

    # show content of %data
    print Data::Dumper->new( [ \%data ], [ '*data' ] )->Dump();
}



$t->parseurl("http://arenas.pagesperso-orange.fr/divers/find.xml");


Mit dem bekomme ich folgendes Ergebnis:

Code: (dl )
1
2
3
4
5
6
%data = (
'c' => '2496',
'd' => '1248',
'a' => '1254',
'b' => '248'
);


Damit hast Du die Werte verfügbar als $data{a} bis $data{d} und kannst sie entsprechend weiterverarbeiten.

Vermutlich geht das noch eleganter und besser, aber das wäre eine Aufgabe für jene, die mehr Erfahrung mit XML-Verarbeitung haben.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Xml Die Werte einzeln auslesen