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 » Parse String to XMLNSC structure

Post new topic  Reply to topic
 Parse String to XMLNSC structure « View previous topic :: View next topic » 
Author Message
LibroMax
PostPosted: Mon Feb 15, 2016 5:24 am    Post subject: Parse String to XMLNSC structure Reply with quote

Newbie

Joined: 25 Oct 2015
Posts: 5

Hello

First I already searched too much about this case but nothing help

I need to convert XML message with namesapce that came from Global cache and put it into my XMLNSC tree by using ESQL only

my steps was get the value from global cache as String
Convert it into BLOB
Convert again it to XMLNSC

My code:

DECLARE receiveRQ CHARACTER;
SET receiveRQ = manageGlobalCache(GCKey,null,'inquiry');
SET myMessage = CAST(receiveRQ AS BLOB CCSID 1208);
DECLARE inCCSID INT InputProperties.CodedCharSetId;
DECLARE inEncoding INT InputProperties.Encoding;
CREATE LASTCHILD OF OutputRoot DOMAIN('XMLNSC') PARSE(myMessage,inCCSID ,inEncoding ,'BLOB', 'XMLNSC');

manageGlobalCache: is internal fuction that receive the global cache
The problem was in the parse line:

CREATE LASTCHILD OF OutputRoot DOMAIN('XMLNSC') PARSE(myMessage,inCCSID ,inEncoding ,'BLOB', 'XMLNSC');

this part return an error in parsing

Could you please help me because I don't know what the error on this statement

And If anyone have another manner to parse the cached message(XML as String) into XMLNSC structure in one step that will be so welcomed

Thanks in advance
Back to top
View user's profile Send private message
maurito
PostPosted: Mon Feb 15, 2016 5:40 am    Post subject: Re: Parse String to XMLNSC structure Reply with quote

Partisan

Joined: 17 Apr 2014
Posts: 358

LibroMax wrote:
Hello

First I already searched too much about this case but nothing help

I need to convert XML message with namesapce that came from Global cache and put it into my XMLNSC tree by using ESQL only

my steps was get the value from global cache as String
Convert it into BLOB
Convert again it to XMLNSC

My code:

DECLARE receiveRQ CHARACTER;
SET receiveRQ = manageGlobalCache(GCKey,null,'inquiry');
SET myMessage = CAST(receiveRQ AS BLOB CCSID 1208);
DECLARE inCCSID INT InputProperties.CodedCharSetId;
DECLARE inEncoding INT InputProperties.Encoding;
CREATE LASTCHILD OF OutputRoot DOMAIN('XMLNSC') PARSE(myMessage,inCCSID ,inEncoding ,'BLOB', 'XMLNSC');

manageGlobalCache: is internal fuction that receive the global cache
The problem was in the parse line:

CREATE LASTCHILD OF OutputRoot DOMAIN('XMLNSC') PARSE(myMessage,inCCSID ,inEncoding ,'BLOB', 'XMLNSC');

this part return an error in parsing

Could you please help me because I don't know what the error on this statement

And If anyone have another manner to parse the cached message(XML as String) into XMLNSC structure in one step that will be so welcomed

Thanks in advance

Code:

|--PARSE--(--BitStreamExpression--+------------------------------+--)--|
                                  | .-<<-----------------------. |     
                                  | V                          | |     
                                  '---+-ENCODING--expression-+-+-'     
                                      +-CCSID--expression----+         
                                      +-SET--expression------+         
                                      +-TYPE--expression-----+         
                                      +-FORMAT--expression---+         
                                      '-Options--------------'


http://www-01.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ak04950_.htm?lang=en

It would help us if you told us what error you are getting. 'BLOB' and 'XMLNSC' in the PARSE clause do not seem to be correct.

You should try something like
Code:

PARSE (myMessage ENCODING xxxx CCSID yyyyy  OPTIONS RootBitStream);
Back to top
View user's profile Send private message
LibroMax
PostPosted: Mon Feb 15, 2016 5:47 am    Post subject: Reply with quote

Newbie

Joined: 25 Oct 2015
Posts: 5

Thanks for your reply

when I depug on this code I got:

CHARACTER:XML Parsing Errors have occurred

on this statement:

CREATE LASTCHILD OF OutputRoot DOMAIN('XMLNSC') PARSE(myMessage,inCCSID ,inEncoding ,'BLOB', 'XMLNSC');
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Mon Feb 15, 2016 5:52 am    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20756
Location: LI,NY

Why are you using inCCSID when your BLOB is in CCSID 1208 ?
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
timber
PostPosted: Mon Feb 15, 2016 6:29 am    Post subject: Reply with quote

Grand Master

Joined: 25 Aug 2015
Posts: 1292

Quote:
when I depug on this code I got:

CHARACTER:XML Parsing Errors have occurred
Please listen carefully...this will save you ( and probably us ) a lot of time.

The error that you have quoted is useless. It tells you nothing at all about how to fix the problem. Whenever you see a useless error message from IIB, assume that there is a more useful error message available.

There is an excellent DeveloperWorks article with the title 'Diagnostic tools available in WebSphere Message Broker and IBM Integration Bus'.
Or, you may be able to reach this blog post by the author:
https://developer.ibm.com/integration/docs/ibm-integration-bus/troubleshooting/diagnostic-tools/

In your case, the short answer is 'take a user trace'.
Back to top
View user's profile Send private message
smdavies99
PostPosted: Mon Feb 15, 2016 8:10 am    Post subject: Reply with quote

Jedi Council

Joined: 10 Feb 2003
Posts: 6076
Location: Somewhere over the Rainbow this side of Never-never land.

timber wrote:


In your case, the short answer is 'take a user trace'.


Ahh... the dying art of usertrace. Apparently is it no longer part of the standard training.

I mentioned this to a fairly new developer recenrly. He looked at me as if I was talking gibberish.
Shame really. It is such a powerful weapon in the developer toolbox.
_________________
WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995

Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions.
Back to top
View user's profile Send private message
timber
PostPosted: Tue Feb 16, 2016 7:32 am    Post subject: Reply with quote

Grand Master

Joined: 25 Aug 2015
Posts: 1292

In this case, user trace is not the only way to get the desired result ( as smdavies99 knows ). It just happens to be the way that experienced developers would do it.
The exceptionList tree always contains the full list of exceptions, so the OP has all the information available right there in the debugger. They just need to look more closely.
Back to top
View user's profile Send private message
smdavies99
PostPosted: Tue Feb 16, 2016 10:45 pm    Post subject: Reply with quote

Jedi Council

Joined: 10 Feb 2003
Posts: 6076
Location: Somewhere over the Rainbow this side of Never-never land.

timber wrote:
In this case, user trace is not the only way to get the desired result ( as smdavies99 knows ). It just happens to be the way that experienced developers would do it.
The exceptionList tree always contains the full list of exceptions, so the OP has all the information available right there in the debugger. They just need to look more closely.


Very true but (there is always one), using the debugger rather than usertrace does not allow you to go backwards through your flow to see where (and the reasons why) it went wrong in the first place. It is very easy to search a usertrace for things like references that can't be resolved because the reference point does not exist. If you code 'defensively' then you can handle this in the ESQL.

Defensive programming is another lost art (IMHO). I was taught it during my degree 40+ years ago. Mention it today and you get blank stares. "What do you mean 'error handling'. My code does not have errors." Well your code might not have errors but GIGO is alive and kicking today.
but I'm getting off topc (by a million miles) so I'll shut up and drink some more
before starting another day some really badly designed software.
_________________
WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995

Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions.
Back to top
View user's profile Send private message
LibroMax
PostPosted: Wed Feb 17, 2016 1:22 am    Post subject: Reply with quote

Newbie

Joined: 25 Oct 2015
Posts: 5

Thanks everyone

I will consider the diagnostic tools for any new problem

The solution for my problem was:

I removed the the arguments for Encoding and CodedCharSetId

It's now working

DECLARE myMessage BLOB;
SET myMessage = CAST(receiveRS AS BLOB CCSID 1208);
CREATE LASTCHILD OF OutputRoot DOMAIN('XMLNSC') PARSE(myMessage);
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Wed Feb 17, 2016 5:08 am    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20756
Location: LI,NY

LibroMax wrote:
Thanks everyone

I will consider the diagnostic tools for any new problem

The solution for my problem was:

I removed the the arguments for Encoding and CodedCharSetId

It's now working

DECLARE myMessage BLOB;
SET myMessage = CAST(receiveRS AS BLOB CCSID 1208);
CREATE LASTCHILD OF OutputRoot DOMAIN('XMLNSC') PARSE(myMessage);

You should have kept the CCSID but instead of setting it to the value you had used first, set it to 1208 which is what represents the data, as described by your lines of code above...
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » Parse String to XMLNSC structure
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.