Tengo que hacer un pequeño trabajo con el módulo LibXML; es una cuestión muy simple, a ver si alguien me puede echar una manita...
Tengo un fichero XML de la forma:
Using xml Syntax Highlighting
<?xml version="1.0" encoding="iso-8859-1"?>
<tokens>
<w id="w1" tokentype="DEN_MAI">
<forma>MARIA</forma>
<anbtal num_grupo="5664">
<tamaina>006</tamaina>
</anbtal>
<ana>
<lema>Maria</lema>
<kat>IZE</kat>
<azp>IZB</azp>
</ana>
</w>
<w id ="w2">
...
<tokens>
<w id="w1" tokentype="DEN_MAI">
<forma>MARIA</forma>
<anbtal num_grupo="5664">
<tamaina>006</tamaina>
</anbtal>
<ana>
<lema>Maria</lema>
<kat>IZE</kat>
<azp>IZB</azp>
</ana>
</w>
<w id ="w2">
...
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Para utilizar LibXML, creo un parser y leo el fichero:
Using perl Syntax Highlighting
#!/usr/local/bin/perl
use XML::LibXML;
use strict;
my $parser = XML::LibXML->new(); # Creo el parser
$parser->keep_blanks(0); # Pasa de los espacios en blanco
my $num_grupo;
# Leo el fichero
my $doc = $parser->parse_file("/home/fichero/prueba.xml");
my $root = $doc->getDocumentElement();
# Quiero quedarme solo con los elem de atributo num_grupo="20":
my $numero = 20;
foreach my $word ($root->findnodes("//w")){
$num_grupo = $word->getAttribute(num_grupo);
if ($num_grupo == $numero)
{
# etc........
}
}
use XML::LibXML;
use strict;
my $parser = XML::LibXML->new(); # Creo el parser
$parser->keep_blanks(0); # Pasa de los espacios en blanco
my $num_grupo;
# Leo el fichero
my $doc = $parser->parse_file("/home/fichero/prueba.xml");
my $root = $doc->getDocumentElement();
# Quiero quedarme solo con los elem de atributo num_grupo="20":
my $numero = 20;
foreach my $word ($root->findnodes("//w")){
$num_grupo = $word->getAttribute(num_grupo);
if ($num_grupo == $numero)
{
# etc........
}
}
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
El problema está, efectivamente, en la línea:
Using perl Syntax Highlighting
Ya que <w> no tiene ningún atributo de nombre "num_grupo". ¿Cómo puedo acceder, entonces, a los atributos de los hijos de <w> (en este caso, de "anbtal")?
Gracias (como siempre),
Xagutxu