Estoy leyendo un documento en XML (parseado con LibXML), y tengo algún problemilla con XPath.
Suponiendo que una muestra del doc XML que tengo es:
- <?xml version="1.0" encoding="iso-8859-1"?>
- <tokens>
- <w id="w1" tokentype="HAS_MAI">
- <forma>Baina</forma>
- <anbtal talde_zenb="13">
- <tamaina>002</tamaina>
- </anbtal>
- </w>
- <w id="w2">
- ...
- </w>
- </tokens>
Hago:
Using perl Syntax Highlighting
use XML::LibXML;
use strict;
my $parser = XML::LibXML->new();
$parser->keep_blanks(0);
my $doc = $parser->parse_file("/home/file.xml");
my $root = $doc->getDocumentElement();
for (my $i = 1; $i < 100; $i ++){
my $iden_00 = "w"."$i";
foreach my $word ($root->findnodes('//w[@id="$iden_00"]')){
foreach my $anbtal ($word->findnodes("anbtal")){
$talde_zenb_00 = $anbtal->getAttribute("talde_zenb");
$tamaina_00 = $anbtal->findnodes("tamaina");
}
}
}
use strict;
my $parser = XML::LibXML->new();
$parser->keep_blanks(0);
my $doc = $parser->parse_file("/home/file.xml");
my $root = $doc->getDocumentElement();
for (my $i = 1; $i < 100; $i ++){
my $iden_00 = "w"."$i";
foreach my $word ($root->findnodes('//w[@id="$iden_00"]')){
foreach my $anbtal ($word->findnodes("anbtal")){
$talde_zenb_00 = $anbtal->getAttribute("talde_zenb");
$tamaina_00 = $anbtal->findnodes("tamaina");
}
}
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Y no me lee $talde_zen_00 ni $tamaina_00. Lo curioso es que en la parte de XPath, si pongo, por ejemplo "w3" en vez de la variable "$iden_00":
foreach my $word ($root->findnodes('//w[@id="w3"]')){
...
Sí que lee. No sé si la cuestión está en las comillas...
Gracias como siempre,
Xagutxu