Permite convertir los mensajes del modelo de objetos a una representación XML.
El XML utilizado no es estándard sino una representación interna, propietaria del componente.
El siguiente ejemplo muestra el formato del xml, que es básicamente un mapeo lineal de la estructura SWIFT del mensaje.
<message> <block1> <applicationId>F</applicationId> <serviceId>01</serviceId> <logicalTerminal>BANKBEBBAXXX</logicalTerminal> <sessionNumber>2222</sessionNumber> <sequenceNumber>123456</sequenceNumber> </block1> <block2 type="input"> Â <messageType>100</messageType> <receiverAddress>BANKDEFFXXXX</receiverAddress> <messagePriority>U</messagePriority> <deliveryMonitoring>3</deliveryMonitoring> </block2> <block4> <tag> <name>23G</name> <value>NEWM</value> </tag> <tag> <name>339</name> <value>CAT09U</value> </tag> <tag> <name>344</name> <value>U3</value> </tag> <tag> <name>345</name> <value>810895896898899900910920935940</value> </tag> <tag> <name>339</name> <value>CMMN12</value> </tag> </block4> </message>
Â
Notar que en el ejemplo anterior el tag <obsolescencePeriod> fue intencionalmente omitido. Este es el comportamiento normal para los campos opcionales del bloque 1 y 2 que no estan presentes en el mensaje representado. Si algun campo de bloque 1 o 2 esta presente, debe tener la longitud correcta para el campo acorde a la definición de SWIFT. Por ejemplo el tag: <obsolescencePeriod>null</obsolescencePeriod> generará una excepción.
El siguiente ejemplo tiene un bloque 2 de tipo output, donde se puede ver como el campo MIR esta subdividido en cada uno de sus componentes internos:
<message> Â <block1> Â <applicationId>F</applicationId> Â <serviceId>01</serviceId> Â <logicalTerminal>BANKBEBBAXXX</logicalTerminal> Â <sessionNumber>2222</sessionNumber> Â <sequenceNumber>123456</sequenceNumber> Â </block1> Â <block2 type="output"> Â <messageType>100</messageType> Â <senderInputTime>1200</senderInputTime> Â <MIRDate>970103</MIRDate> Â <MIRLogicalTerminal>BANKBEBBAXXX</MIRLogicalTerminal> Â <MIRSessionNumber>2222</MIRSessionNumber> Â <MIRSequenceNumber>123456</MIRSequenceNumber> Â <receiverOutputDate>970103</receiverOutputDate> Â <receiverOutputTime>1201</receiverOutputTime> Â <messagePriority>N</messagePriority> Â </block2> </message>
Los elementos principal de implementación son las clases XMLParser y XMLWriterVisitor, pero la forma más simple de utilizar la funcionalidad es mediante el API de servicios de conversión:
IConversionService srv = new ConversionService();
SwiftMessage msg = new SwiftMessage(); SwiftBlock1 b1 = new SwiftBlock1(); b1.setApplicationId("F"); b1.setServiceId("01"); b1.setLogicalTerminal("BICFOOYYAXXX"); b1.setSessionNumber("1234"); b1.setSequenceNumber("123456"); msg.setBlock1(b1);
//gets the xml representation of the constructed message String xml = srv.getXML(msg);
//gets a message object from a given xml String xml2 = "<message>...</message>"; SwiftMessage msg2 = srv.getMessageFromXML(xml2);
|