|
Sure. But it is still be much easier to be able to
stick it in directly ...
----- Original Message -----
Sent: Sunday, August 01, 2004 2:21
PM
Subject: Re: Going from Text Based XML to
a SOAPBody?
For now I am looking just to proof out the concept, so
performance isn't my biggest concern. The backend that will be generating the
XML will be generating it to text (idrs.sourceforge.net). Eventually depending
on how I see the project going, I will probably adjust the idrs so that
instead of generating text, it generates a DOM model from the get-go. Your
technology looks great, but unfortunately the GPL isn't compatible with the
MPL, which is what I have my own project
under. -------------------------------------------------------------------------------------------------- Marc
Boorshtein Sr. Software Engineer, Octet
String [EMAIL PROTECTED] On Aug 1, 2004, at 4:05 PM, Jimmy
zhang wrote:
Have you thought of ways to
insert the XML message directly into the SOAP body without parsing XML?/smaller>/fontfamily> Is
that what is shown in the code?/smaller>/fontfamily> It
seems that if parsing the message is required before the insertion can be
done, it is really inefficient./smaller>/fontfamily> Check
out http://vtd-xml.sf.net/color>/smaller>/fontfamily> it
has an XML processing (open sourced) that allows you to stick a message
directly into the other one./smaller>/fontfamily> Let
me know if you have any questions./smaller>/fontfamily> -----
Original Message -----/x-tad-bigger>/fontfamily> /x-tad-bigger>From:/x-tad-bigger>
/x-tad-bigger>Marc
Boorshtein/x-tad-bigger>/color> /x-tad-bigger>/fontfamily> To:/x-tad-bigger>/fontfamily>
/x-tad-bigger>[EMAIL PROTECTED]/x-tad-bigger>/color>
/x-tad-bigger>/fontfamily> Sent:/x-tad-bigger>/fontfamily>
Sunday, August 01, 2004 1:58 PM/x-tad-bigger>/fontfamily> Subject:/x-tad-bigger>/fontfamily>
Re: Going from Text Based XML to a
SOAPBody?/x-tad-bigger>/fontfamily>
I've made some great progress
on this. I now have almost what I am looking for. I have the following code
in my invoke method:
public void invoke(MessageContext msgContext)
throws AxisFault { System.out.println("In
INVOKE!!!!!!!!");
Message resMsg =
msgContext.getResponseMessage(); SOAPEnvelope resEnv; // If we didn't
have a response message, make sure we set one up // with the appropriate
versions of SOAP and Schema if (resMsg == null) { resEnv = new
SOAPEnvelope(msgContext.getSOAPConstants(),
msgContext .getSchemaVersion());
resMsg = new
Message(resEnv); msgContext.setResponseMessage(resMsg); } else
{ resEnv = resMsg.getSOAPEnvelope(); }
Message reqMsg =
msgContext.getRequestMessage(); SOAPEnvelope reqEnv =
reqMsg.getSOAPEnvelope();
DocumentBuilderFactory domFactory =
DocumentBuilderFactory .newInstance(); DocumentBuilder domBuilder =
null; Document doc = null; try { domBuilder =
domFactory.newDocumentBuilder();
doc =
domBuilder.parse("/Users/mlb/test.xml");
} catch (Exception e)
{ e.printStackTrace();
}
RPCElement body = null; body =
new RPCElement("rpc-resp");
RPCElement resBody = new
RPCElement("Response"); resBody.setPrefix(body.getPrefix()); resBody.setNamespaceURI(body.getNamespaceURI()); try
{ resBody.setEncodingStyle(msgContext.getEncodingStyle()); RPCParam
param = new RPCParam(new QName("http://soapinterop.org/", "echoString"),
doc); resBody.addParam(param); resEnv.addBodyElement(resBody); }
catch (SOAPException e1) { // TODO Auto-generated catch
block e1.printStackTrace(); }
}
I took most of the code
from the JavaProdiver and the RPCProvider. This will produce the following
SOAP message: <?xml version="1.0"
encoding="UTF-8"?> <soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <echoString
xmlns="http://soapinterop.org/"> <myxml xmlns="">
<val>test</val> <val>test</val> <val>test</val> </myxml>
</echoString> </soapenv:Body> </soapenv:Envelope>
Everything
is great except for the "<echoString" tag. The tag is generated be the
RPCParam which deserizlized the Document object. It looks like that at this
point I need to look at the RPCParam class to see if I can create a version
that will not create the wrapper tags and will just de-serialize the
Document into the soap body. Any
thoughts?
-------------------------------------------------------------------------------------------------- Marc
Boorshtein Sr. Software Engineer, Octet
String [EMAIL PROTECTED] On Aug 1, 2004, at 1:36 PM,
Vijai Mohan wrote:
I think that will
work.
Vijai Mohan
Software
Design Engineer
SensorLogic�M2M made
easy.
972-934-7375 x 2111
972-934-7376
(fax)
[EMAIL PROTECTED]
www.Sensorlogic.com
<image.tiff>
-----Original
Message----- From: Marc Boorshtein
[mailto:[EMAIL PROTECTED] Sent: Sunday, August 01,
2004 1:33 PM To: [EMAIL PROTECTED] Subject: Re:
Going from Text Based XML to a SOAPBody?
Thanks for the
tip, but this is a bit simple for what I'm looking to do. I'd like to build
a provider that will let me take the XML in the request's body, perform some
tasks to extract the information into an object model and then pass that
information into a dynamic content generation system to generate some XML
and add it to the SOAPBody. From the looks of it, I can serialize the XML
into Document as you showed below, and then create an RPCElement and add it
to the body as it's done in RPCProvider. Is this
correct?
-------------------------------------------------------------------------------------------------- Marc
Boorshtein Sr. Software Engineer, Octet
String [EMAIL PROTECTED] On Aug 1, 2004, at 12:41 PM,
Vijai Mohan wrote:
Create a simple webservice and use this
snippet to return a xml document from an xml file. Axis automatically
converts the Document in to the soap body .
public static
Document getXMLDocument(){ DocumentBuilderFactory domFactory =
DocumentBuilderFactory .newInstance(); DocumentBuilder domBuilder =
null; try { domBuilder =
domFactory.newDocumentBuilder();
Document doc =
domBuilder.parse("c:\\XMLFILE.xml");
return doc; } catch
(Exception e) { e.printStackTrace(); return
null; } }
Vijai Mohan Software Design
Engineer SensorLogic�M2M made easy. 972-934-7375 x
2111 972-934-7376
(fax) [EMAIL PROTECTED] www.Sensorlogic.com
-----Original
Message----- From: Marc Boorshtein
[mailto:[EMAIL PROTECTED] Sent: Sunday, August 01, 2004
12:11 PM To: [EMAIL PROTECTED]; [EMAIL PROTECTED] Subject:
Going from Text Based XML to a SOAPBody?
Hello,
I am working
on implementing a document service in which I want to take text
representation of XML and add it to a SOAPBody. From the looks of it, it
appears that I have to use an XML Parser to go from XML->SOAPElement
in a similar way that I would parse XML into a DOM Tree. The only problem
is that I can't find this "parsing" class. I found SOAPFactory, but it
doesn't seem to be a parser. Am I
missing something?
Thanks!
------------------------------------------------------------------------ -------------------------- Marc
Boorshtein Sr. Software Engineer, Octet
String [EMAIL PROTECTED]
|