• Publicidad

Parse position is outside of buffer at .../Parser/Expat.pm

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

Parse position is outside of buffer at .../Parser/Expat.pm

Notapor losweberos » 2008-12-01 06:07 @296

Buenos días, he instalado el módulo XML::Parser v 2.23 descargado de CPAN, en un AIX 5.3, cuando se ejecuta el make test aparecen varios errores como el siguiente:

Código: Seleccionar todo
Failed 20/23 tests, 13.04% okay
t/cdata...........PositionContext: Parse position is outside of buffer
at
/app/desa/metrred/modulosPerl/XML−Parser−2.23/blib/lib/XML/Parser/Expat.pm
line 344.
t/cdata...........dubious


Sin embargo, al realizar el make install todo va bien, pero al ejecutar el código de la aplicación vuelve a dar el error:

Código: Seleccionar todo
PositionContext: Parse position is outside of buffer at /usr/opt/perl5/lib64/site_perl/5.8.2/aix-thread-multi-64all/XML/Parser/Expat.pm line 344



¿Alguien puede decirnos qué significa este error?, ¿a qué se debe?
losweberos
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2008-10-02 03:04 @169

Publicidad

Notapor explorer » 2008-12-01 07:59 @374

Me suena a un fallo en el xml. A mí me salía algo así cuando el xml estaba en formato utf8 y yo lo leía sin indicarle al programa que estaba justo en ese formato.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor explorer » 2008-12-01 09:06 @421

He encontrado aquí que se trata de un problema sin importancia, a la hora de la instalación.

Que no le demos importancia...

Actualización: me he colado. Dices que el fallo es al correr la aplicación. Quizás sea entonces lo que te he comentado antes, un problema de codificación.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor losweberos » 2008-12-01 09:11 @424

explorer escribiste:He encontrado aquí que se trata de un problema sin importancia, a la hora de la instalación.

Que no le demos importancia....


Si instalado está, pero el error me da a la hora de ejecutar la aplicación, y eso no puedo ignorarlo,
el xml que se está tratando de leer viene en ISO-8859-1, ¿cómo puedo saber en qué formato lo está tratando de interpretar?
losweberos
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2008-10-02 03:04 @169

Notapor explorer » 2008-12-01 11:56 @539

Perl, por defecto, piensa que todo lo que lee por los ficheros de entrada, está en iso-8859-1. Pero, por definición, los xml siempre "deberían" estar en utf8.

La codificación suele estar descrita en la primera línea del xml. O si no viene, por defecto se piensa que es utf8.

Pero esto es importante por si hay caracteres especiales (acentos, eñes, etc.) a lo largo del xml.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor losweberos » 2008-12-01 12:09 @548

Este es el XML que está intentando leer el programa
<?xml version="1.0" encoding="ISO-8859-1"?>
<User>
<usId>X99999</usId>
<sName>Nombre Apellido</sName>
<eMail>[email protected]</eMail>
<prfList>
<prf>prf1</prf>
<prf>prf2</prf>
</prfList>
<simplePrfList>
<simplePrf>Comercial</simplePrf>
<simplePrf>Administrador</simplePrf>
</simplePrfList>
<funcList>
<func>accComercial</func>
<func>accAdmin</func>
<func>accDatos</func>
</funcList>
<simpleFuncList>
<simpleFunc>Comercial</simpleFunc>
<simpleFunc>Admin</simpleFunc>
<simpleFunc>Datos</simpleFunc>
</simpleFuncList>
<grpList></grpList>
<simpleGrpList></simpleGrpList>
<gruList></gruList>
<simpleGruList></simpleGruList>
</User>

Como se vé no hay ningun caracter especiál dentro del XML.

El error PositionContext: Parse position is outside of buffer at /usr/opt/perl5/lib64/site_perl/5.8.2/aix-thread-multi-64all/XML/Parser/Expat.pm line 344 da al ejecutar el siguiente código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $xp = XML::XPath->new(xml => $xml);

foreach my $inf ($xp->find('//usId')->get_nodelist){ $USER = $inf->string_value; }
 
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


En concreto al realizar
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$xp->find('//usId')
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4



Gracias de antemano
losweberos
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2008-10-02 03:04 @169

Notapor explorer » 2008-12-02 05:00 @250

Lo que son las cosas... estoy haciendo pruebas y a mi no me da ningún error:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use warnings;

use XML::XPath;

my $xml = do { undef $/; open F, '<kk.xml'; <F> };
my $xp = XML::XPath->new(xml => $xml);

foreach my $inf ($xp->find('//usId')->get_nodelist) {
    $USER = $inf->string_value;
    print "$USER\n";               # X99999
}

__END__
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
<?xml version="1.0" encoding="ISO-8859-1"?>
<User>
  <usId>X99999</usId>
  <sName>Nombre Apellido</sName>
  <eMail>[email protected]</eMail>
  <prfList>
    <prf>prf1</prf>
    <prf>prf2</prf>
  </prfList>
  <simplePrfList>
    <simplePrf>Comercial</simplePrf>
    <simplePrf>Administrador</simplePrf>
  </simplePrfList>
  <funcList>
    <func>accComercial</func>
    <func>accAdmin</func>
    <func>accDatos</func>
  </funcList>
  <simpleFuncList>
    <simpleFunc>Comercial</simpleFunc>
    <simpleFunc>Admin</simpleFunc>
    <simpleFunc>Datos</simpleFunc>
  </simpleFuncList>
  <grpList></grpList>
  <simpleGrpList></simpleGrpList>
  <gruList></gruList>
  <simpleGruList></simpleGruList>
</User>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Yo estoy usando Perl 5.8.8, XML::Parser versión 2.34, y XML::XPath version 1.13:
Código: Seleccionar todo
perl -MXML::XPath -le 'print $XML::XPath::VERSION'
1.13

Es posible que el problema esté en la versión de Perl.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor losweberos » 2008-12-03 07:15 @344

Sí, pensamos que era problema de la instalación del Perl en un AIX con 64bits, por lo que hemos reinstalado de nuevo. En estos momentos tenemos Perl 5.8.2 con XML::Parser versión 2.28 y XML::XPath versión 1.13. Ahora nos da otro error en la misma línea, en este caso el error es:

no element found at line 1, column 0, byte -1:
54^
7226696
at /app/productos/perl582/lib/site_perl/5.8.2/aix/XML/Parser.pm line 183
losweberos
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2008-10-02 03:04 @169

Notapor explorer » 2008-12-03 07:57 @373

Pues ese es un error del parser, que está diciendo que lo que le estáis pasando no es un XML.

¿Podríais poner un programa mínimo de Perl que reproduzca el error? El XML supongo que será el mismo que tenéis más arriba.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor losweberos » 2008-12-03 09:15 @427

El error da con el mismo código y el mismo xml que has puesto antes.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/app/productos/perl582/bin/perl5.8.2
use warnings;

use XML::XPath;

my $xml = do { undef $/; open F, '<Mi.xml'; <F> };
my $xp = XML::XPath->new(xml => $xml);

foreach my $inf ($xp->find('//usId')->get_nodelist) {
    $USER = $inf->string_value;
    print "$USER\n";
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


El único cambio introducido es el path al perl.

¿Puede ser algún problema con la versión 5.8.2? Esto mismo lo hemos montado en dos Linux con las versiones 5.8.8 y 5.10 y ahí no da ningún problema.
losweberos
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2008-10-02 03:04 @169

Siguiente

Volver a Básico

¿Quién está conectado?

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