Thread XML::Twig (4 answers)
Opened by Gast at 2007-12-05 17:32

Gast Gast
 2007-12-05 17:32
#103478 #103478
Hi,

ich hab eine xml Datei (zu groß für XML::Simple) und versuche mit CPAN:XML::Twig auf einzelne Elemente/Attribute zu zugreifen.

xml:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
                ...
</server>
<server type="0x1" address="86.210.65.68" status="UP">
<hostname>86.210.65.68</hostname>
...
<name>Server.com</name>
<rules>
<rule name="protocol">7</rule>
...
<rule name="dedicated">1</rule>
<rule name="os">linux</rule>
</rules>
</server>
<server type...


Sehe aber gearde den Wald vor lauter XML::Twing Methoden nicht. Wie komm ich z.B. an den "status", "hostname" und an das "os"?

Hier mein Versuch:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl -w
use strict;
use XML::Twig;

my $twig = new XML::Twig( TwigRoots => { 'server' => \&output_srv });
$twig->parsefile("myfile.xml");

sub output_srv {
    my( $tree, $elem ) = @_;
    my $status = $elem->{att}->{'status'}, "\n";
    my $hostname  = $elem->elt_id('hostname')->text || '';
    my $os  = $elem->elt_id('os')->text || '';
    print "Host: $hostname    Status: $status    OS: $os\n";
}


Freue mich über jede Idee.

View full thread XML::Twig