Please do not cross post to the mailing lists.. Send it either to the dev or either to the user...
Some who are interested in the conversation will miss the conversation if somebody responded to only to one list...
Thanx,
Thilina
On 10/21/06, Thilina Gunarathne <[EMAIL PROTECTED]> wrote:
Try this,
OMElement theElement = null;
OMNode theNode = theElement.getFirstOMChild();
if (theNode.getType() == OMNode.TEXT_NODE) {
OMText theText = (OMText) theNode;
theText.setBinary(true);
DataHandler dh = (DataHandler) theText.getDataHandler();
InputStream stream = dh.getDataSource().getInputStream();
} else if (theNode.getType () == OMNode.ELEMENT_NODE ) {
// do what ever you need with the plain XML
}
Axis2 cannot automatically identify whether a given string is base64Binary or plain string. It's up to the user to provide that information either as a schema or by manually setting the "setBinary" property. Axis2 can idetify this automatically in the case of MTOM optimised MIME.
~ThilinaOn 10/21/06, Tony Dean < [EMAIL PROTECTED]> wrote:Thilina,So the following code should work?boolean binary = false;OMElement theElement...OMNode theNode = theElement.getFirstOMChild();if (theNode.getType() == OMNode.TEXT_NODE) {OMText theText = (OMText) theNode;if (theText.isBinary() {// base64Binary: could be base64 encoded in soap body or mime attachment, how do I know the difference or should it even matter?binary = true;DataHandler dh = theText.getDataHandler();InputStream stream = dh.getDataSource().getInputStream();...}}if (!binary) {// then process the child nodes of theElement as plain xml...}Thank you for your insight.
From: Thilina Gunarathne [mailto:[EMAIL PROTECTED]]
Sent: Saturday, October 21, 2006 2:25 AM
To: [email protected]
Cc: [email protected]
Subject: Re: MTOMHi,
You would be able to handle the case2 & 3 without much hassle.. In the case2 you have to explicitly set that the content is base64Binary. If not Axis2 will treat it as a normal string. You can do that either by using a schema which defines that the content of the "output" element is base64Binary or you can explicitly set that by setting the "setBinary(true);" in that text node.
Following modified code will handle both case 2 & 3..
OMElement outputElement ...
OMNode node = outputElement.getFirstOMChild();
if (node.getType() == OMNode.TEXT_NODE) {
OMText text = (OMText) node;
test.setBinary(true);
DataHandler dh = text.getDataHandler();
InputStream stream = dh.getDataSource().getInputStream();
}
Is dh valid for case (2) as well? or is dh=null in this case? I can test text.isOptimized() to see if base64 encoded? How can I know if its plain xml?
If the node is an instance of OMElement then it's a piece of xml.. You can also test for node.getType() == OMNode.ELEMENT_NODE...
Thanks,
~Thilina
Maybe text.isBinary ()...
Thanks for any suggestions.
Tony Dean
SAS Institute Inc.
919.531.6704
[EMAIL PROTECTED]
SAS... The Power to Know
http://www.sas.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--
http://webservices.apache.org/~thilina/
http://thilinag.blogspot.com/
--
http://webservices.apache.org/~thilina/
http://thilinag.blogspot.com/
--
http://webservices.apache.org/~thilina/
http://thilinag.blogspot.com/
