Tengo un documento XML que necesitaría procesar. En concreto necesito extraer la información del atributo "HGNC" dentro de la etiqueta "result".
Using xml Syntax Highlighting
- <Tool>
- <schema xsi:schemaLocation="http://Tool/API/Prediction.xsd"/>
- <search id=" MIMAT0000246">
- <results>
- <result id="227" HGNC="Tmem50b" EnsEMBL="ENSMUSG00000022964">
- <miRNA>mmu-miR-122-5p</miRNA>
- <method_name>Mirtarbase</method_name>
- <result_type>external_info</result_type>
- <data_type>Branched DNA probe assay</data_type>
- <support_type>Functional MTI</support_type>
- <pmid>18438401</pmid>
- </result>
- </results>
- </search>
- </Tool>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Para procesar este XML se facilita un programa que yo he modificado para que me presente los resultados en un archivo de salida con un formato de texto separado por tabuladores:
Using perl Syntax Highlighting
- #!/usr/bin/perl
- $|=1;
- use strict;
- use XML::LibXML;
- my $SourceListingURL = "http://mirgate.bioinfo.cnio.es/ResT/API";
- my $parser = XML::LibXML->new();
- my $xmldoc = $parser->parse_file($SourceListingURL);
- use Getopt::Long;
- #usage: perl remote_miR.pl -p /path -l list -o organism -f miRNA_confirmed
- my ($path, $list, $working_organism,$source);
- GetOptions(
- 'path=s' => \$path,
- 'list=s' => \$list,
- 'organism=s' => \$working_organism,
- 'feature=s' => \$source #"gene_confirmed","miRNA_confirmed","gene_miRNA_confirmed","miRNA_gene_confirmed";
- );
- open (INFILE, "$path/$list") || die ("cannot open input file");
- chomp(my @mirna_of_interest = <INFILE>);
- open SALIDA,'>'."$path/Predictions"."$list" or die "ERROR: $!\n";
- #####################################################Example : retrieve experimentally validated information about my genes of interest#####################################
- #my $parser = XML::LibXML->new();
- $working_organism="human";
- foreach my $gene (@mirna_of_interest){
- my $SourceListingURL = "http://mirgate.bioinfo.cnio.es/ResT/API/$working_organism/$source/$gene";
- my $xmldoc = $parser->parse_file($SourceListingURL);
- print "There is/are " . scalar(@{$xmldoc->findnodes('/miRGate/search/results/result')}) . " experimentally validated experiments for $gene\n\n";
- print SALIDA "There is/are " . scalar(@{$xmldoc->findnodes('/miRGate/search/results/result')}) . " experimentally validated experiments for $gene\n\n";
- my $cont=1;
- foreach my $confirmed_data ($xmldoc->findnodes('/miRGate/search/results/result')) {
- print "$cont" ." )";
- print SALIDA "$cont";
- foreach my $confirmed_attr ($confirmed_data->childNodes()){
- if($confirmed_data){
- #print "\t ". $confirmed_attr->localname .": " . $confirmed_attr->textContent."\n" ;
- #print SALIDA"\t ". $confirmed_attr->localname .": " . $confirmed_attr->textContent."\n" ;
- #Imprimo un resultado por linea############################
- print "\t ". $confirmed_attr->textContent."\t" ;
- print SALIDA"\t ". $confirmed_attr->textContent."\t" ;
- }
- }
- $cont++;
- print "\n";
- print SALIDA "\n";
- }
- }
- ##############################################################################################################################################################################
- __END__
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Pero si usamos este programa no me aparece por ningún lado el dato que comento al principio (atributo "HGNC" dentro de la etiqueta "result").
He intentado conseguirlo incluyendo estas lineas de código, en una versión posterior, pero parece que no soy capaz de capturar el susodicho dato.
Using perl Syntax Highlighting
- my $symbol=($xmldoc->findvalue('/miRGate/search/results/result/@HGNC')) ;
- print $confirmed_data->to_literal()."\n" ;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
¿Alguna sugerencia y/o ayuda?
Muchas gracias por adelantado.