Andi123: Wie auf Attribute in einem XML zugreifen?

Hallo,

ich moechte gern auch auf die Attribute eines Elements in einer XML-Datei zugreifen.

Z.B. habe ich:
<TextRectID n="10"/>

Und moechte am Ende dastehen haben
$id="10"

Nun weiss ich nicht, wie ich dazu komme.

Bei dem PHP-XML-Parser ging das ueber das Array $attrs und die '10' war dann mit $id=$attrs['N'] auslesbar.

Ich nutze unter PERL XML::PARSER.

Vielen Dank
Andi

  1. Tag Andi123.

    ich moechte gern auch auf die Attribute eines Elements in einer XML-Datei zugreifen.
    Nun weiss ich nicht, wie ich dazu komme.
    Ich nutze unter PERL XML::PARSER.

    Du kennst die Dokumentation von XML::Parser? Du müsstest, um an die Attribute zu kommen, den Stream-Parser anwerfen, der dir verschiedene Callback-Methoden anbietet. In deinem Fall brauchst du StartTag(), um an die Attribute zu kommen. Im zweiten Parameter %_ stehen deine Attribute mit den dazu gehörenden Werten. Der Zugriff funktioniert stark vereinfacht so:

    #!/usr/bin/perl -w  
    use XML::Parser;  
    use strict;  
      
    my %attlist = ();  
    my $p = new XML::Parser(Style => 'Stream');  
    $p->parsefile('dein.xml');  
      
    sub StartTag {  
      my $p = shift;  
      my $key = shift;  
      while ( my ($att, $val) = each %_) {  
        %attlist{$key}{$att} = $val;  
      }  
    }  
      
    sub EndTag { }  
      
    sub Text { }
    

    Im Ergebnis stehen im HoH namens attlist zu jedem Element die jeweiligen Attribute mit ihrem Wert. Damit kannst du dann machen, was du möchtest. Wichtig vielleicht noch zu erwähnen, dass die Ausgabe durch EndTag() gesteuert wird, das müsstest du entsprechend an deine Wünsche anpassen.

    Siechfred

    --
    Früh übt sich ... (74kB)
    Der schwierigste Blick ist immer der über den Tellerrand -- man glaubt gar nicht, wie hoch so ein Tellerrand sein kann.