Bonjour à vous !

Voici mon problème. Voici un bout de code d'un fichier XML que je dois parser :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
<protein protein_name="IPI:IPI00026195.1" n_indistinguishable_proteins="7" probability="0.94" percent_coverage="11.4" unique_stripped_peptides="FSGSGSGTDFTLK" group_sibling_id="a" total_number_peptides="1">
         <annotation protein_description="Ig"/>
         <indistinguishable_protein protein_name="IPI:IPI">
            <annotation protein_description="IPI:IPI"/>         </indistinguishable_protein>
         <indistinguishable_protein protein_name="IPI:IPI00026175.1">
            <annotation protein_description="Ig"/>         </indistinguishable_protein>
Oui, je suis sûr que vous voyez déjà ma question : je souhaite récupérer la valeur de l'attribut protein_name dans la balise annotation en fonction du noeud parent c'est à dire en fonction des balises protein ou indistinguishable_protein.
Voici un bout de code de comment je récupère certaines données :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
sub handle_start {
   my(@stack);
   my($name, $desc, $val, $sequence, $an);
   my( $expat, $protein, %attrs ) = @_;
   push( @stack, { protein_group=>$protein});
   if( %attrs ) {
        foreach my $key( keys %attrs ) {
            if ($key eq "group_number") {
                $gn = $attrs{$key};
                my($dbh) = DBI->connect("DBI:mysql:database=proteinprophet;host=localhost", 
                        "proteo", 
                        "kimduy",
                        {'RaiseError' => 1}
                );
   				my($query) = "insert into groupe values ('$gn', '$NOM');";
   				my($sth) = $dbh->do($query);
            }
            elsif ($key eq "protein_name" and $protein eq 'protein') {
                $name = $attrs{$key};
                $an = $name;
                my($dbh) = DBI->connect("DBI:mysql:database=proteinprophet;host=localhost", 
                        "proteo", 
                        "kimduy",
                        {'RaiseError' => 1}
                );
                my($query) = "insert into proteine (NomDossier, NumGroupe, AccessNumber) values ('$NOM', '$gn', '$name');";
   				 my($sth) = $dbh->do($query);
            }
}
Quelqu'un pourrait-il m'aider à améliorer mon parsing ?

Merci d'avance !

@++

PS : regardez Alien le tout premier, meilleur film à frissons de tout l'Univers !!!