[XML] Parser selon des noeuds enfants
Bonjour à vous !
Voici mon problème. Voici un bout de code d'un fichier XML que je dois parser :
Code:
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:
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 !!! http://www.planetsmilies.com/avatars.../alien0003.gif