Bonjour à vous !
Voici mon problème. Voici un bout de code d'un fichier XML que je dois parser :
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.
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>
Voici un bout de code de comment je récupère certaines données :
Quelqu'un pourrait-il m'aider à améliorer mon parsing ?
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); } }
Merci d'avance !
@++
PS : regardez Alien le tout premier, meilleur film à frissons de tout l'Univers !!!
Partager