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.