• Publicidad

XPath

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

XPath

Notapor Eowyn » 2012-05-08 04:47 @241

Hola, antes de nada, gracias por la atención.

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:

Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
  1. </text>
  2. <terms>
  3. <!-- Euskal Herriko -->
  4. <term tid="t1" type="entity" lemma="Euskal_Herria" pos="R.IZE-LIB" case="GEL" netype="Tokia">
  5. <span>
  6. <target id="w1"/>
  7. <target id="w2"/>
  8. </span>
  9. </term>
  10. <!-- kostaldea -->
  11. <term tid="t2" type="open" lemma="kostalde" pos="N.IZE-ARR" case="ABS">
  12. <span>
  13. <target id="w3"/>
  14. </span>
  15. </term>
  16. <!-- VI -->
  17. <term tid="t3" type="close" lemma="VI" pos="O.IZE-ZKI">
  18. <span>
  19. <target id="w5"/>
  20. </span>
  21. </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:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.  my $FITX = XML::XPath->new(filename => $fitxategia); #leer archivo
  2.  
  3.     my $nodeset = $FITX->find('/KAF/terms'); # buscar los paragrafos "term"
  4.     my $gakoa;
  5.  
  6.     foreach my $node ($nodeset->get_nodelist) {
  7.         print $nodeset;
  8.         my $term= XML::XPath::XMLParser::as_string($node); #pasar el nodo a string
  9.                 print $term; #imprimir nodo
  10.                 ($gakoa) = $term =~ /pos="(.*?)"/;
  11.                 print $gakoa;
  12.                 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.
Eowyn
Perlero nuevo
Perlero nuevo
 
Mensajes: 45
Registrado: 2011-06-04 08:51 @410

Publicidad

Re: XPath

Notapor explorer » 2012-05-08 06:13 @301

El tema está en la expresión XPath.

Debe ser esta: '/KAF/terms/term', para que te devuelva el conjunto de <term>, no solo un <terms>.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: XPath

Notapor Eowyn » 2012-05-09 04:54 @246

Gracias.

¡¡Ya funciona!! Eso lo probé hace tiempo pero no me devolvía nada, y es que había otro error, pero arreglado el error y probando con éso... ¡It works! ¡Muchas gracias!
Eowyn
Perlero nuevo
Perlero nuevo
 
Mensajes: 45
Registrado: 2011-06-04 08:51 @410


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 15 invitados