Este ejemplo explica cómo se puede utilizar un modelo codificado delimitado para analizar los registros CSV si éstos contienen identificadores exclusivos que pueden utilizarse como código. El modelo de CSV codificado es más simple y flexible que los modelos únicamente delimitados que se usaban en los ejemplos anteriores. Con un modelo codificado todos los registros pueden ser opcionales y, como puede verse en el ejemplo 9, permite la elección de distintos tipos de registros en cualquier orden en la parte principal del mensaje CSV. En el mensaje de entrada hay un único registro de cabecera seguido de un solo registro de repetición separado por coma seguido de un solo registro de cola. Se analizará utilizando el conjunto de mensajes de ejemplo y escrito como mensaje XML.
Este apartado incluye instrucciones para ejecutar el ejemplo. Incluye también un ejemplo de un mensaje de prueba entrada y el mensaje de salida esperado correspondiente, de forma que podrá confirmar que el ejemplo ha funcionado.
Si desea ver una explicación más detallada sobre el modelo usado en este ejemplo, consulte el apartado Explorar el ejemplo de Valor separado por coma (CSV).
El mensaje de prueba usado para la ejecución de este ejemplo se basa en el siguiente formato:
2005-04-01,X123456IB7,customer details<CRLF>
CUST,Bob,Dyson,1 Desolation Row,Orlando,FL,32802,HYT-457-AX<CRLF>
CUST,Jimmy,Pace,1002 Misty Mountain Drive,New York,NY,10001,ADU-239-BX<CRLF>
CUST,Ralf,McCartney,67 Penny Lane,Las Vegas,NV,89125,JUI-854-CF<CRLF>
CUST,Elvis,John,3 Yellow Brick Road,Chicago,IL,60699,GGY-118-AS<CRLF>
CUST,Rick,Clayton,461 Ocean Boulevard,Miami,FL,33101,LOP-212-TY<CRLF>
TRAILER,5
<CRLF> representa los caracteres ASCII con puntos de código hexadecimales x'0D' y x'0A'.
Este ejemplo usa el flujo de mensajes CSV2XML. Contiene muchos nodos de entrada, pero para este ejemplo utiliza el nodo con la cola cola llamada CSV2XML.IN8. El flujo de mensajes pasa el mensaje a través de un nodo Compute que cambia el formato del mensaje por XML y efectúa la salida del mismo. Esto hace que el mensaje CSV se analice en un árbol lógico y después se grabe en formato XML. El mensaje XML de salida muestra la estructura lógica del mensaje que se ha analizado.
Para ejecutar el ejemplo:
Intente ahora repetir los pasos 2-6, usando el archivo XML_msg8.enqueue (que contiene el mismo mensaje XML de salida del primer flujo) y XML2CSV.IN y XML2CSV.OUT como nombres de las dos colas. Esto pasará el mensaje XML a través del flujo inverso usado la primera etapa que dio como resultado un mensaje CSV como salida. Compárelo con el mensaje CSV original. Tendrían que ser idénticos.
Si todos los pasos anteriores han funcionado correctamente, el ejemplo ha terminado.
Vea ahora el proyecto de conjunto de mensajes y la explicación de esta definición de mensaje en el apartado Explorar el ejemplo de Valor separado por coma (CSV).
El mensaje XML de salida esperado es el siguiente:
<?xml version="1.0"?>
<CSV_8>
<header>
<requestDate>2005-04-01</requestDate>
<requestID>X123456IB7</requestID>
<requestType>customer details</requestType>
</header>
<customer>
<firstname>Bob</firstname>
<lastname>Dyson</lastname>
<streetaddress>1 Desolation Row</streetaddress>
<cityname>Orlando</cityname>
<statecode>FL</statecode>
<postcode>32802</postcode>
<referencecode>HYT-457-AX</referencecode>
</customer>
<customer>
<firstname>Jimmy</firstname>
<lastname>Pace</lastname>
<streetaddress>1002 Misty Mountain Drive</streetaddress>
<cityname>New York</cityname>
<statecode>NY</statecode>
<postcode>10001</postcode>
<referencecode>ADU-239-BX</referencecode>
</customer>
<customer>
<firstname>Ralf</firstname>
<lastname>McCartney</lastname>
<streetaddress>67 Penny Lane</streetaddress>
<cityname>Las Vegas</cityname>
<statecode>NV</statecode>
<postcode>89125</postcode>
<referencecode>JUI-854-CF</referencecode>
</customer>
<customer>
<firstname>Elvis</firstname>
<lastname>John</lastname>
<streetaddress>3 Yellow Brick Road</streetaddress>
<cityname>Chicago</cityname>
<statecode>IL</statecode>
<postcode>60699</postcode>
<referencecode>GGY-118-AS</referencecode>
</customer>
<customer>
<firstname>Rick</firstname>
<lastname>Clayton</lastname>
<streetaddress>461 Ocean Boulevard</streetaddress>
<cityname>Miami</cityname>
<statecode>FL</statecode>
<postcode>33101</postcode>
<referencecode>LOP-212-TY</referencecode>
</customer>
<trailer>
<totalRecords>5</totalRecords>
</trailer>
</CSV_8>