Tengo un problema con Xpath ya que no acabo de entender bien en las tutoriales que he mirado cómo solucionar éste problema:
Tenemos un archivo de esta forma:
Using xml Syntax Highlighting
- </text>
- −
- <terms>
- <!-- Euskal Herriko -->
- −
- <term tid="t1" type="entity" lemma="Euskal_Herria" pos="R.IZE-LIB" case="GEL" netype="Tokia">
- −
- <span>
- <target id="w1"/>
- <target id="w2"/>
- </span>
- </term>
- <!-- kostaldea -->
- −
- <term tid="t2" type="open" lemma="kostalde" pos="N.IZE-ARR" case="ABS">
- −
- <span>
- <target id="w3"/>
- </span>
- </term>
- <!-- VI -->
- −
- <term tid="t3" type="close" lemma="VI" pos="O.IZE-ZKI">
- −
- <span>
- <target id="w5"/>
- </span>
- </term>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Quiero coger cada nodo "term" por separado, convertirlo en string y guardarlo.
Para ello hago lo siguiente:
Using perl Syntax Highlighting
- my $FITX = XML::XPath->new(filename => $fitxategia); #leer archivo
- my $nodeset = $FITX->find('/KAF/terms'); # buscar los paragrafos "term"
- my $gakoa;
- foreach my $node ($nodeset->get_nodelist) {
- print $nodeset;
- my $term= XML::XPath::XMLParser::as_string($node); #pasar el nodo a string
- print $term; #imprimir nodo
- ($gakoa) = $term =~ /pos="(.*?)"/;
- print $gakoa;
- push (@{ $Moten_Hash_Taula{"$gakoa"} }, $term);
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Pero la cuestión es que, por ejemplo, la variable "$gakoa" sólo me devuelve su primer valor (R.IZE_LIB). Intuyo que porque coge todos los nodos term como si fuera un string en lugar de tratarlos uno por uno.
Les agradezco la ayuda ahora y siempre. Merci.