ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » Convert base64 in ESQL to extract underlying XML elments

Post new topic  Reply to topic Goto page 1, 2  Next
 Convert base64 in ESQL to extract underlying XML elments « View previous topic :: View next topic » 
Author Message
deepak.gowder
PostPosted: Wed Sep 19, 2012 8:07 am    Post subject: Convert base64 in ESQL to extract underlying XML elments Reply with quote

Novice

Joined: 19 Sep 2012
Posts: 20

Hi,

I have gone thru some topics related to this, but I'm still not sure how to get it done. Apologies!

I'm reading a message with one of the elements being a base64Binary and that has an XML message. I wanted to extract few values using ESQL and put it into a queue. Is there a way to do it in ESQL? Even if not how can I achieve this?

Thanks! Deepak
Back to top
View user's profile Send private message
lancelotlinc
PostPosted: Wed Sep 19, 2012 8:09 am    Post subject: Re: Convert base64 in ESQL to extract underlying XML elments Reply with quote

Jedi Knight

Joined: 22 Mar 2010
Posts: 4941
Location: Bloomington, IL USA

deepak.gowder wrote:
Is there a way to do it in ESQL?


Yes. There are a few ways which you can know this information.

1. Coach
2. Mentor
3. InfoCentre
4. Training
_________________
http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER
Back to top
View user's profile Send private message Send e-mail
mgk
PostPosted: Wed Sep 19, 2012 8:17 am    Post subject: Reply with quote

Padawan

Joined: 31 Jul 2003
Posts: 1642

Quote:
Is there a way to do it in ESQL


Yes, as of 7.0.0.2, ESQL has had BASE64ENCODE and BASE64DECODE functions which you can use. You can find the documentation for these function in the infocenter.

Kind regards,
_________________
MGK
The postings I make on this site are my own and don't necessarily represent IBM's positions, strategies or opinions.
Back to top
View user's profile Send private message
deepak.gowder
PostPosted: Wed Sep 19, 2012 9:43 am    Post subject: Reply with quote

Novice

Joined: 19 Sep 2012
Posts: 20

mgk wrote:
Quote:
Is there a way to do it in ESQL


Yes, as of 7.0.0.2, ESQL has had BASE64ENCODE and BASE64DECODE functions which you can use. You can find the documentation for these function in the infocenter.

Kind regards,


I'm still running on 7.0.0. A sample code could help?

Cheers!
Back to top
View user's profile Send private message
lancelotlinc
PostPosted: Wed Sep 19, 2012 10:40 am    Post subject: Reply with quote

Jedi Knight

Joined: 22 Mar 2010
Posts: 4941
Location: Bloomington, IL USA

deepak.gowder wrote:
mgk wrote:
Quote:
Is there a way to do it in ESQL


Yes, as of 7.0.0.2, ESQL has had BASE64ENCODE and BASE64DECODE functions which you can use. You can find the documentation for these function in the infocenter.

Kind regards,


I'm still running on 7.0.0. A sample code could help?

Cheers!


Message Broker version numbers have four digits. Update your toolkit and runtime to 7.0.0.4.

"A sample code could help?" Sample code? Did you read the Infocentre articles?
_________________
http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER
Back to top
View user's profile Send private message Send e-mail
deepak.gowder
PostPosted: Wed Sep 19, 2012 12:45 pm    Post subject: Reply with quote

Novice

Joined: 19 Sep 2012
Posts: 20

Quote:
"A sample code could help?" Sample code? Did you read the Infocentre articles?


The Infocenter helped. I confused with picking up things from different posts... But it was straight easy.

Here's the ex from Infocenter:

Examples
The base64 encoding of a BLOB source string and subsequent decoding back to BLOB is shown by the following example:
DECLARE original BLOB X'48656c6c6f';
DECLARE encoded CHARACTER BASE64ENCODE(original);
DECLARE decoded BLOB BASE64DECODE(encoded);
The base64 encoding of a CHARACTER source string that is first automatically converted to UTF-8 and later decoded is shown by the following example:
DECLARE original CHARACTER 'Hello World!';
DECLARE encoded CHARACTER BASE64ENCODE(original);
DECLARE decoded BLOB BASE64DECODE(encoded);
DECLARE decoded2 CHARACTER CAST(decoded AS CHARACTER CCSID 1208);
Back to top
View user's profile Send private message
lancelotlinc
PostPosted: Thu Sep 20, 2012 4:42 am    Post subject: Reply with quote

Jedi Knight

Joined: 22 Mar 2010
Posts: 4941
Location: Bloomington, IL USA

SUCCESS !! Congratulations.
_________________
http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER
Back to top
View user's profile Send private message Send e-mail
deepak.gowder
PostPosted: Thu Sep 20, 2012 7:25 am    Post subject: Reply with quote

Novice

Joined: 19 Sep 2012
Posts: 20

Need more help!!

I have this XML coming in as base64 along with other elements.

TXLife Version="2.23.00" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://ACORD.org/Standards/Life/2">
<TXLifeRequest id="TXLifeRequest_a1fc84d9-1fc6-4479-9cd6-cf34541f0b16" PrimaryObjectID="Holding_fd8e853f-2039-4ac3-9fb3-6e043cd031f9">
<TransRefGUID>beafac2e-c44e-4107-879b-566c05ab5383</TransRefGUID>
<TransType tc="103">OLI_TRANS_NBSUB</TransType>
<TransExeDate>2012-09-14</TransExeDate>
<TransExeTime>08:53:02.1596290-06:00</TransExeTime>
<OLifE>
<Holding id="Holding_fd8e853f-2039-4ac3-9fb3-6e043cd031f9">
<HoldingTypeCode tc="2">OLI_HOLDTYPE_POLICY</HoldingTypeCode>
<Policy CarrierPartyID="Party_23ccb721-ee84-4920-830d-7c87ce95ba04">
<PolNumber/>
<ProductType tc="2">OLI_PRODTYPE_TERM</ProductType>
<CarrierCode>AMA</CarrierCode>
<Jurisdiction tc="1">OLI_USA_AL</Jurisdiction>
<Life>
<Coverage id="Coverage_badb240f-e9eb-44e4-b9e2-0047fc5bf2fc">
<LifeCovTypeCode tc="6">OLI_COVTYPE_TERMLEVEL</LifeCovTypeCode>
<IndicatorCode tc="1">OLI_COVIND_BASE</IndicatorCode>
<LifeParticipant PartyID="Party_78b7ae67-b695-4a99-8371-21cd9d446dd7"/>
</Coverage>
</Life>
<ApplicationInfo>
<ApplicationJurisdiction tc="1">LE_ASUSA_FEL</ApplicationJurisdiction>
</ApplicationInfo>
</Policy>
</Holding>
<Party id="Party_78b7ae67-b695-4a99-8371-21cd9d446dd7">
<PartyTypeCode tc="1">OLI_PT_PERSON</PartyTypeCode>
<Address id="Address_604056fd-2c77-4568-9b1b-ce26fd38344b">
<AddressTypeCode tc="1">LEI_ADTYPE_HOME</AddressTypeCode>
</Address>
</Party>
<Party id="Party_23ccb721-ee84-4920-830d-7c87ce95ba04">
<PartyTypeCode tc="2">LWI_PW_OAR</PartyTypeCode>
<FullName>Custom</FullName>
<Organization/>
<Carrier>
<CarrierCode>WERA</CarrierCode>
</Carrier>
</Party>
</OLifE>
</TXLifeRequest>
</TXLife>

And here's the code that I have to read this as Char -

DECLARE DecodedAcord BLOB base64Decode(InputRoot.XMLNSC.ns17:submit103.acord103);
DECLARE Decoded2Acord CHARACTER CAST(DecodedAcord AS CHARACTER CCSID 1208);

I can't get to extract the elements that I need from this XML, ie. from Decoded2Acord field. While I'm trying to find out a way to do this, your help/ suggestions will be of much help.

Thanks!
Quote:
Back to top
View user's profile Send private message
lancelotlinc
PostPosted: Thu Sep 20, 2012 7:28 am    Post subject: Reply with quote

Jedi Knight

Joined: 22 Mar 2010
Posts: 4941
Location: Bloomington, IL USA

Can you post your code within [c o d e] tags?

Parse the blob into XML. Blob is a blob and a blob is not a message tree.
_________________
http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER
Back to top
View user's profile Send private message Send e-mail
deepak.gowder
PostPosted: Thu Sep 20, 2012 7:37 am    Post subject: Reply with quote

Novice

Joined: 19 Sep 2012
Posts: 20

lancelotlinc wrote:
Can you post your code within [c o d e] tags?

Parse the blob into XML. Blob is a blob and a blob is not a message tree.


Code:

        DECLARE DecodedAcord BLOB     base64Decode(InputRoot.XMLNSC.ns17:submit103.acord103);
        DECLARE Decoded2Acord CHARACTER CAST(DecodedAcord AS CHARACTER CCSID 1208);
---
---
        CREATE PROCEDURE base64Decode(IN source CHARACTER)
   RETURNS BLOB
   LANGUAGE JAVA
   EXTERNAL NAME "com.ibm.broker.javacompute.Base64.decode";


What am I doing wrong here?
Back to top
View user's profile Send private message
kimbert
PostPosted: Thu Sep 20, 2012 7:42 am    Post subject: Reply with quote

Jedi Council

Joined: 29 Jul 2003
Posts: 5542
Location: Southampton

You have two different problems to solve.
a) how to decode your base64 data into a BLOB
b) how to parse the decoded BLOB to produce a message tree ( only required when the base64 is an XML document )

a) is a solved problem. If you want to avoid writing ESQL for this then you can ask XMLNSC to do it automatically. Just switch on validation and set 'Build tree using schema types' on the input node. This only works if your XML schema is accurate.
b) is easy. Use ESQL's CREATE statement with a PARSE clause to parse the BLOB into a message tree. Search this forum for examples - this question comes up all the time.
Back to top
View user's profile Send private message
lancelotlinc
PostPosted: Thu Sep 20, 2012 7:54 am    Post subject: Reply with quote

Jedi Knight

Joined: 22 Mar 2010
Posts: 4941
Location: Bloomington, IL USA

Use Tagged Encoded Length which supports handling AL3 messages containing message groups unknown to the message dictionary.

http://publib.boulder.ibm.com/infocenter/wmbhelp/v7r0m0/index.jsp?topic=%2Fcom.ibm.etools.mft.doc%2Fac00590_.htm

Alternately, I always recommend people take the WMB Dev I and Dev II training classes.

WebSphere Message Broker has the ability to leverage ACORD and other open standards with support for ACORD AL3, CSV, EDIFACT, FIX, HL7, SWIFT, TLOG, and X12.

http://publib.boulder.ibm.com/infocenter/wmbhelp/v8r0m0/index.jsp?topic=%2Fcom.ibm.etools.mft.doc%2Fad09520_.htm

Each group with an ACORD AL3 message has a header consisting of a one-digit number, three letters, plus a three-digit total length count. These first seven characters can be modeled as a tag. The data within the headers is fixed length.

http://publib.boulder.ibm.com/infocenter/wmbhelp/v8r0m0/index.jsp?topic=%2Fcom.ibm.etools.mft.doc%2Fad09530_.htm

http://publib.boulder.ibm.com/infocenter/wmbhelp/v8r0m0/index.jsp?topic=%2Fcom.ibm.etools.mft.doc%2Fad09540_.htm

http://publib.boulder.ibm.com/infocenter/wmbhelp/v8r0m0/index.jsp?topic=%2Fcom.ibm.etools.mft.doc%2Fad09550_.htm


_________________
http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER
Back to top
View user's profile Send private message Send e-mail
deepak.gowder
PostPosted: Thu Sep 20, 2012 10:30 am    Post subject: Reply with quote

Novice

Joined: 19 Sep 2012
Posts: 20

Thank you for the suggestions. It helped, I was able to parse the BLOB into an XML using this code:

Code:

CREATE LASTCHILD OF OutputRoot.XMLNSC.CheckInMessage.Acord103 DOMAIN('XMLNSC') PARSE(DecodedAcord, InputProperties.Encoding, InputProperties.CodedCharSetId, 'BLOB', 'XML');


And the Output looked like this:


Code:

XMLNSC
   CheckInMessage
         PolicyNumber
         SSN:CHARACTER:123-34-6789
         LastName:CHARACTER:Test
         FirstName:CHARACTER:User
         PDF:CHARACTER:JVBERi0xLjQNJeLjz9MNCjI1ODAgM
         Acord103
   XMLNSC
         XmlDeclaration
               Version:CHARACTER:1.0
               Encoding:CHARACTER:UTF-16
               StandAlone:CHARACTER:no
         TXLife
               xsd:CHARACTER:http://www.w3.org/2001/XMLSchema
               xsi:CHARACTER:http://www.w3.org/2001/XMLSchema-instance
               xmlns:CHARACTER:http://ACORD.org/Standards/Life/2
               Version:CHARACTER:2.23.00
               TXLifeRequest
                     id:CHARACTER:TXLifeRequest_a1fc84d9-1fc6-4479-9cd6-cf34541f0b16
                     PrimaryObjectID:CHARACTER:Holding_fd8e853f-2039-4ac3-9fb3-6e043cd031f9
                     TransRefGUID:CHARACTER:beafac2e-c44e-4107-879b-566c05ab5383
                     TransType:CHARACTER:OLI_TRANS_NBSUB
                     TransExeDate:CHARACTER:2012-09-14
                     TransExeTime:CHARACTER:08:53:02.1596290-06:00
                     OLifE
                           Holding
                                 id:CHARACTER:Holding_fd8e853f-2039-4ac3-9fb3-6e043cd031f9
                                 HoldingTypeCode:CHARACTER:OLI_HOLDTYPE_POLICY
                                 Policy
                                       CarrierPartyID:CHARACTER:Party_23ccb721-ee84-4920-830d-7c87ce95ba04
                                       PolNumber
                                       ProductType:CHARACTER:OLI_PRODTYPE_TERM
                                       CarrierCode:CHARACTER:AMA
                                       Jurisdiction:CHARACTER:OLI_USA_AL
                                       Life
                                             Coverage
                                                   id:CHARACTER:Coverage_badb240f-e9eb-44e4-b9e2-0047fc5bf2fc
                                                   LifeCovTypeCode:CHARACTER:OLI_COVTYPE_TERMLEVEL
                                                   IndicatorCode:CHARACTER:OLI_COVIND_BASE
                                                   LifeParticipant
                                                         PartyID:CHARACTER:Party_78b7ae67-b695-4a99-8371-21cd9d446dd7
                                       ApplicationInfo
                                             ApplicationJurisdiction:CHARACTER:OLI_USA_AL
                           Party
                                 id:CHARACTER:Party_78b7ae67-b695-4a99-8371-21cd9d446dd7
                                 PartyTypeCode:CHARACTER:OLI_PT_PERSON
                                 Address
                                       id:CHARACTER:Address_604056fd-2c77-4568-9b1b-ce26fd38344b
                                       AddressTypeCode:CHARACTER:OLI_ADTYPE_HOME
                           Party
                                 id:CHARACTER:Party_23ccb721-ee84-4920-830d-7c87ce95ba04
                                 PartyTypeCode:CHARACTER:OLI_PT_ORG 


Sorry, couldn't get the alignment right.

Now I'm trying to read the individual elements from this.

Code:
SET Environment.Variables.TestVariable = Acord103.XMLNSC.TXLife.TXLifeRequest.TransRefGUID;


Can't get to read the element, what am I doing wrong here? Might be silly, I think, but trying to get over it.

Cheers!
Back to top
View user's profile Send private message
lancelotlinc
PostPosted: Thu Sep 20, 2012 10:33 am    Post subject: Reply with quote

Jedi Knight

Joined: 22 Mar 2010
Posts: 4941
Location: Bloomington, IL USA

lancelotlinc wrote:
jrsetters wrote:
I don't know what I am doing.


This will help you, Grasshopper.

https://www-304.ibm.com/jct03001c/services/learning/ites.wss/us/en?pageType=course_description&courseCode=WM664


https://www-304.ibm.com/jct03001c/services/learning/ites.wss/us/en?pageType=course_description&courseCode=WM674



Code:
SET Environment.Variables.TestVariable =  OutputRoot.XMLNSC.CheckInMessage.Acord103.XMLNSC.TXLife.TXLifeRequest.TransRefGUID;

_________________
http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER
Back to top
View user's profile Send private message Send e-mail
deepak.gowder
PostPosted: Thu Sep 20, 2012 10:42 am    Post subject: Reply with quote

Novice

Joined: 19 Sep 2012
Posts: 20

Quote:

This will help you, Grasshopper.

https://www-304.ibm.com/jct03001c/services/learning/ites.wss/us/en?pageType=course_description&courseCode=WM664


https://www-304.ibm.com/jct03001c/services/learning/ites.wss/us/en?pageType=course_description&courseCode=WM674


Nice of you. Can I get some donations now??
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Goto page 1, 2  Next Page 1 of 2

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » Convert base64 in ESQL to extract underlying XML elments
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.