Buenas foreros,

Aquí va una pregunta para algún Scott Klement que haya por ahí ;-)

Estoy intentando parsear un documento XML utilizando la operación de ILE RPG "XML-INTO", que carga un documento XML completo y lo mapea con las estructuras de datos (DS) definidas en el RPG. Mi problema es que no consigo definir correctamente dichas estructuras para que no me dé el error RNX0353 ("El documento XML no coincide con la variable RPG") al ejecutar el XML-INTO.

Adjunto fuente del RPG y del documento XML. Los nodos del XML que se pueden repetir varias veces son PFdoc, PFremitente y PFfirmante. La ruta en la que se encuentra el XML se recibe en el primer parámetro del RPG: "$file_path".

Muchas gracias de antemano por vuestra ayuda.

Un saludo,
Potele




José de la Herran Núñez
Kordinazio Teknikoko Burua | Jefe del Área de Coordinación Técnica
Informazioaren Teknologien Saila Departamento de Tecnologías de la Información
Tel: 945161614
Fax: 945161600
Vitoria-Gasteizko Udala. Ayuntamiento de Vitoria-Gasteiz
VITORIA-GASTEIZ! EUROPEAN GREEN CAPITAL 2012

------------------------------------------------------------

KONFIDENTZIALTASUNA

Komunikazio honen edukia eta honi erantsitako dokumentazio osoarena 
konfidentziala da eta adierazitako jasotzaileari beste inori ez dagokio.
Zeu jasotzaile ez bazina, jakinaraz iezaguzu, mesedez, eta eskatu nahi dizugu 
edukiaren berri inori ez esan eta mezua ezaba dezazula.


CONFIDENCIALIDAD

El contenido de esta comunicación, así como el de toda la documentación anexa, es confidencial y va dirigido únicamente al destinatario del mismo. En el supuesto de que usted no fuera el destinatario, le solicitamos que nos lo indique y no comunique su contenido a terceros, procediendo a su destrucción.


CONFIDENCIALITY

The content of this communication and any attached information is confidential 
and exclusively for the use of the addressee.
If you are not the addressee, we ask you to notify to the sender and do not 
pass its content to another person, and please be sure you destroy it. 
     h dftactgrp(*no) bnddir('QC2LE')
     h option (*nodebugio)

     D peticion        DS                   QUALIFIED
     D   asunto                     255A
     D   referencia                  30A
     D   texto                     2000A
     D   tipoFirma                   15A
     D   aplicacion                  30A
     D   tipAccDev                   10A
     D   accDev                    2000A
     D   tipAccFir                   10A
     D   accFir                    2000A
     D   enviarYa                     1A
     D   docus                              LIKEDS(docs)
     D   remis                              LIKEDS(remits)
     D   firms                              LIKEDS(firmas)
     D   resp                               LIKEDS(respuesta)

     D docs            DS                   QUALIFIED
     D   doc                                LIKEDS(documento) Dim(10)
     D   countdoc                     5i 0 Inz

     D remits          DS                   QUALIFIED
     D   remit                              LIKEDS(remitente) Dim(5)
     D   countremit                   5i 0 Inz

     D firmas          DS                   QUALIFIED
     D   firma                              LIKEDS(firmante) Dim(10)
     D   countfirma                   5i 0 Inz

     D respuesta       DS
     D   codResult                    5A
     D   textoResult                255A
     D   hashPeticion                10A

     D documento       DS
     D   urlDoc                     255A
     D   mimeTypeDoc                 30A
     D   nombreDoc                  255A
     D   hashDoc                     10A

     D remitente       DS
     D   dniRemi                     15A
     D   cargoRemi                   15A

     D firmante        DS
     D   dniFirmante                 15A

     d $file_path      S            255A
     d $options        S            100a   varying

     d ProgStatus     sds
     d  Parms            *PARMS
     d  ProgName         *PROC
     d  ErrMsgID              40     46
     d  ErrMsg                91    169
     d  JobName              244    253
     d  Userid               254    263
     d  JobNumber            264    269

      *
      *----- Main Routine
      *
     c     *entry        plist
     c                   parm                    $file_path
     c                   parm                    result            5
      *
      /free

             $options  = 'doc=file +
                trim=all +
                countprefix=count';
             xml-into peticion %XML(%trim($file_path) : %trim($options));

      /end-free
     c                   eval      *inlr = *on
     c                   return

<?xml version="1.0" encoding="UTF-8"?>
<PFpeticion>
	<PFasunto>Asunto 444</PFasunto>
	<PFreferencia>referencia 444</PFreferencia>
	<PFtexto>Texto 444</PFtexto>
	<PFtipoFirma>CASCADA</PFtipoFirma>
	<PFaplicacion>WEBSRV</PFaplicacion>
	<PFtipoAccionDevuelta>WEB</PFtipoAccionDevuelta>
	<PFaccionDevuelta>hola</PFaccionDevuelta>
	<PFtipoAccionFirmada>WEB</PFtipoAccionFirmada>
	<PFaccionFirmada>adios</PFaccionFirmada>
	<PFenviarYa>S</PFenviarYa>
	<PFdocs>
		<PFdoc>
			<PFurlDoc>/TMPUSR/Ejemplo.doc</PFurlDoc>
			<PFmimeTypeDoc>doc</PFmimeTypeDoc>
			<PFnombreDoc>Ejemplo.doc</PFnombreDoc>
			<PFhashDocumento></PFhashDocumento>
		</PFdoc>
		<PFdoc>
			<PFurlDoc>/TMPUSR/Ejemplo2.doc</PFurlDoc>
			<PFmimeTypeDoc>doc</PFmimeTypeDoc>
			<PFnombreDoc>Ejemplo2.doc</PFnombreDoc>
			<PFhashDocumento></PFhashDocumento>
		</PFdoc>
	</PFdocs>
	<PFremitentes>
		<PFremitente>
			<PFdniRemitente>1111111</PFdniRemitente>
		</PFremitente>
		<PFremitente>
			<PFdniRemitente>22222222</PFdniRemitente>
		</PFremitente>
	</PFremitentes>
	<PFfirmantes>
		<PFfirmante>
			<PFdniFirmante>3333333</PFdniFirmante>
		</PFfirmante>
		<PFfirmante>
			<PFdniFirmante>4444444</PFdniFirmante>
		</PFfirmante>
	</PFfirmantes>
	<PFrespuesta>
		<PFcodResultado></PFcodResultado>
		<PFtextoResultado/>
		<PFhashPeticion></PFhashPeticion>
	</PFrespuesta>
</PFpeticion>
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Responder a