You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Bartolomeo Nicolotti <bn...@siapcn.it> on 2008/04/11 11:48:05 UTC
avoid xmlns in message
Hi,
I've used axis2 to build a web services that filters and forward SOAP
messages that contains xml from OTA xsd to another web service. The xsd
are here:
http://www.opentravel.org/Specifications/ReleaseNotes.aspx?spec=2007A
The web service has been generated from a wsdl with the command:
wsdl2java.sh -uri DynPkgOTA.wsdl -s -ss -sd -ssi -sp -d xmlbeans -o ..
with which the classes to marshall/unmarshall xml from the OTA xsd, as
the xsd are refenced in the wsdl.
The forwarded messages are sent in a low-level way:
////////////////////////////////////////////////////////////////////
SOAPConnectionFactory soapConnFactory =
SOAPConnectionFactory.newInstance();
SOAPConnection connection = soapConnFactory.createConnection();
//Next, create the actual message
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage message = messageFactory.createMessage();
SOAPPart soapPart = message.getSOAPPart();
//Create objects for the message parts
SOAPEnvelope envelope = soapPart.getEnvelope();
SOAPBody body = envelope.getBody();
body.addDocument((Document) node_to_be_sent);
//Save the message
message.saveChanges();
//Send the message to destination and get the reply
reply = connection.call(message, uri);
////////////////////////////////////////////////////////////////////
Above node_to_be_sent is obained:
node_to_be_sent = hotelSearchRQ.getDomNode();
where hotelSearchRQ is an xmlbeans object parsed from a filtered
message.
The problem is that in the SOAP message forwarded the way above the xml
tags have a lot of xmls="...", as below. Is there a way to avoid the
presence of this xmlns?
SOAP MESSAGE SENT TO http://htl-wsd.infotechsrl.it/proxyxml/services/:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body xmlns:axis2ns41="http://www.opentravel.org/OTA/2003/05">
<axis2ns52:OTA_HotelSearchRQ
xmlns:axis2ns52="http://www.opentravel.org/OTA/2003/05"
xmlns:axis2ns42="http://www.opentravel.org/OTA/2003/05"
xmlns:axis2ns40="http://www.opentravel.org/OTA/2003/05"
xmlns:axis2ns23="http://www.opentravel.org/OTA/2003/05" Target="Test">
<axis2ns23:POS xmlns:axis2ns16="http://www.opentravel.org/OTA/2003/05"
xmlns:axis2ns43="http://www.opentravel.org/OTA/2003/05">
<axis2ns16:Source
xmlns:axis2ns44="http://www.opentravel.org/OTA/2003/05"
xmlns:axis2ns3="http://www.opentravel.org/OTA/2003/05"
xmlns:axis2ns10="http://www.opentravel.org/OTA/2003/05" AgentSine="SP">
<axis2ns3:RequestorID
xmlns:axis2ns45="http://www.opentravel.org/OTA/2003/05" ID="siap"
MessagePassword="siap" />
<axis2ns10:BookingChannel
xmlns:axis2ns6="http://www.opentravel.org/OTA/2003/05"
xmlns:axis2ns46="http://www.opentravel.org/OTA/2003/05">
<axis2ns6:CompanyName
xmlns:axis2ns47="http://www.opentravel.org/OTA/2003/05" Code="SIA" />
</axis2ns10:BookingChannel>
</axis2ns16:Source>
</axis2ns23:POS>
<axis2ns40:Criteria
xmlns:axis2ns34="http://www.opentravel.org/OTA/2003/05"
xmlns:axis2ns48="http://www.opentravel.org/OTA/2003/05">
<axis2ns34:Criterion
xmlns:axis2ns26="http://www.opentravel.org/OTA/2003/05"
xmlns:axis2ns29="http://www.opentravel.org/OTA/2003/05"
xmlns:axis2ns49="http://www.opentravel.org/OTA/2003/05"><axis2ns26:HotelRef xmlns:axis2ns50="http://www.opentravel.org/OTA/2003/05" ChainCode="SI" HotelCityCode="city" />
<axis2ns29:StayDateRange
xmlns:axis2ns51="http://www.opentravel.org/OTA/2003/05" End="2008-04-10
+02:00" Start="2008-04-15+02:00" />
</axis2ns34:Criterion></axis2ns40:Criteria>
</axis2ns52:OTA_HotelSearchRQ>
</soapenv:Body>
</soapenv:Envelope>
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org
Re: avoid xmlns in message
Posted by Bartolomeo Nicolotti <bn...@siapcn.it>.
To solve the problem I've purged the XmlObjects, by hand
static public void purgeNamespace( XmlCursor cursor ){
HashMap hm_dup = new HashMap();
TokenType tt = null;
boolean already_found = false;
int debugStep = 1;
while ((tt = cursor.toNextToken()) != TokenType.ENDDOC) {
already_found = false; //leave the first
if (debugStep >= 1) {
System.out.println("TokenType:" + tt.toString() + "(" +
tt.intValue() + ")");
}
QName name = cursor.getName();
if (name != null) {
String localPart = name.getLocalPart();
String prefix = name.getPrefix();
String namespaceURI = name.getNamespaceURI();
if (hm_dup.containsKey(namespaceURI)) {
already_found = true;
} else {
hm_dup.put(namespaceURI, "");
}
if (debugStep >= 1) {
System.out.println("prefix:" + prefix + ", uri:" +
namespaceURI + ", localPart:" + localPart);
}
if ((tt == TokenType.START) && already_found) {
QName new_name = new QName(localPart);
cursor.setName(new_name);
} else {
}
}
}
}
Bye!
Il giorno ven, 11/04/2008 alle 11.48 +0200, Bartolomeo Nicolotti ha
scritto:
> Hi,
>
> I've used axis2 to build a web services that filters and forward SOAP
> messages that contains xml from OTA xsd to another web service. The xsd
> are here:
>
> http://www.opentravel.org/Specifications/ReleaseNotes.aspx?spec=2007A
>
> The web service has been generated from a wsdl with the command:
>
> wsdl2java.sh -uri DynPkgOTA.wsdl -s -ss -sd -ssi -sp -d xmlbeans -o ..
>
> with which the classes to marshall/unmarshall xml from the OTA xsd, as
> the xsd are refenced in the wsdl.
>
> The forwarded messages are sent in a low-level way:
>
>
> ////////////////////////////////////////////////////////////////////
> SOAPConnectionFactory soapConnFactory =
> SOAPConnectionFactory.newInstance();
> SOAPConnection connection = soapConnFactory.createConnection();
>
> //Next, create the actual message
> MessageFactory messageFactory = MessageFactory.newInstance();
> SOAPMessage message = messageFactory.createMessage();
> SOAPPart soapPart = message.getSOAPPart();
>
> //Create objects for the message parts
> SOAPEnvelope envelope = soapPart.getEnvelope();
>
> SOAPBody body = envelope.getBody();
>
> body.addDocument((Document) node_to_be_sent);
>
> //Save the message
> message.saveChanges();
>
> //Send the message to destination and get the reply
> reply = connection.call(message, uri);
> ////////////////////////////////////////////////////////////////////
>
> Above node_to_be_sent is obained:
>
> node_to_be_sent = hotelSearchRQ.getDomNode();
>
> where hotelSearchRQ is an xmlbeans object parsed from a filtered
> message.
>
> The problem is that in the SOAP message forwarded the way above the xml
> tags have a lot of xmls="...", as below. Is there a way to avoid the
> presence of this xmlns?
>
> SOAP MESSAGE SENT TO http://htl-wsd.infotechsrl.it/proxyxml/services/:
> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
> <soapenv:Body xmlns:axis2ns41="http://www.opentravel.org/OTA/2003/05">
> <axis2ns52:OTA_HotelSearchRQ
> xmlns:axis2ns52="http://www.opentravel.org/OTA/2003/05"
> xmlns:axis2ns42="http://www.opentravel.org/OTA/2003/05"
> xmlns:axis2ns40="http://www.opentravel.org/OTA/2003/05"
> xmlns:axis2ns23="http://www.opentravel.org/OTA/2003/05" Target="Test">
> <axis2ns23:POS xmlns:axis2ns16="http://www.opentravel.org/OTA/2003/05"
> xmlns:axis2ns43="http://www.opentravel.org/OTA/2003/05">
> <axis2ns16:Source
> xmlns:axis2ns44="http://www.opentravel.org/OTA/2003/05"
> xmlns:axis2ns3="http://www.opentravel.org/OTA/2003/05"
> xmlns:axis2ns10="http://www.opentravel.org/OTA/2003/05" AgentSine="SP">
> <axis2ns3:RequestorID
> xmlns:axis2ns45="http://www.opentravel.org/OTA/2003/05" ID="siap"
> MessagePassword="siap" />
> <axis2ns10:BookingChannel
> xmlns:axis2ns6="http://www.opentravel.org/OTA/2003/05"
> xmlns:axis2ns46="http://www.opentravel.org/OTA/2003/05">
> <axis2ns6:CompanyName
> xmlns:axis2ns47="http://www.opentravel.org/OTA/2003/05" Code="SIA" />
> </axis2ns10:BookingChannel>
> </axis2ns16:Source>
> </axis2ns23:POS>
> <axis2ns40:Criteria
> xmlns:axis2ns34="http://www.opentravel.org/OTA/2003/05"
> xmlns:axis2ns48="http://www.opentravel.org/OTA/2003/05">
> <axis2ns34:Criterion
> xmlns:axis2ns26="http://www.opentravel.org/OTA/2003/05"
> xmlns:axis2ns29="http://www.opentravel.org/OTA/2003/05"
> xmlns:axis2ns49="http://www.opentravel.org/OTA/2003/05"><axis2ns26:HotelRef xmlns:axis2ns50="http://www.opentravel.org/OTA/2003/05" ChainCode="SI" HotelCityCode="city" />
> <axis2ns29:StayDateRange
> xmlns:axis2ns51="http://www.opentravel.org/OTA/2003/05" End="2008-04-10
> +02:00" Start="2008-04-15+02:00" />
> </axis2ns34:Criterion></axis2ns40:Criteria>
> </axis2ns52:OTA_HotelSearchRQ>
> </soapenv:Body>
> </soapenv:Envelope>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org