SOAP envelope XML body extraction
hello , I'm new in the 'XML-world' and also new on this forum but i have a question.
My function :
create or replace
FUNCTION DHL_SOAP_RESPONSE_XMLTYPE RETURN XMLType AS
SOAP_RESPONSE constant varchar2(32767) :=
'<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<rateresp:RateResponse xmlns:rateresp="http://scxgxtt.phx-dc.dhl.com/euExpressRateBook/RateMsgResponse">
<Provider code="DHL">
<Notification code="0">
<Message/>
</Notification>
<Service type="C">
<TotalNet>
<Currency>EUR</Currency>
<Amount>17.28</Amount>
</TotalNet>
<Charges>
<Currency>EUR</Currency>
<Charge>
<ChargeType>MEDICAL EXPRESS</ChargeType>
<ChargeAmount>14.77</ChargeAmount>
</Charge>
<Charge>
<ChargeType>FUEL SURCHARGE</ChargeType>
<ChargeAmount>2.51</ChargeAmount>
</Charge>
</Charges>
<DeliveryTime>2013-02-06T12:00:00</DeliveryTime>
<CutoffTime>2013-02-05T20:30:00</CutoffTime>
<NextBusinessDayInd>N</NextBusinessDayInd>
</Service>
<Service type="T">
<TotalNet>
<Currency>EUR</Currency>
<Amount>17.28</Amount>
</TotalNet>
<Charges>
<Currency>EUR</Currency>
<Charge>
<ChargeType>EXPRESS 12:00</ChargeType>
<ChargeAmount>14.77</ChargeAmount>
</Charge>
<Charge>
<ChargeType>FUEL SURCHARGE</ChargeType>
<ChargeAmount>2.51</ChargeAmount>
</Charge>
</Charges>
<DeliveryTime>2013-02-06T12:00:00</DeliveryTime>
<CutoffTime>2013-02-05T20:30:00</CutoffTime>
<NextBusinessDayInd>N</NextBusinessDayInd>
</Service>
<Service type="G">
<TotalNet>
<Currency/>
<Amount>0.00</Amount>
</TotalNet>
<DeliveryTime>2013-02-06T23:59:00</DeliveryTime>
<CutoffTime>2013-02-05T20:30:00</CutoffTime>
<NextBusinessDayInd>N</NextBusinessDayInd>
</Service>
<Service type="N">
<TotalNet>
<Currency>EUR</Currency>
<Amount>13.69</Amount>
</TotalNet>
<Charges>
<Currency>EUR</Currency>
<Charge>
<ChargeType>DOMESTIC EXPRESS</ChargeType>
<ChargeAmount>11.70</ChargeAmount>
</Charge>
<Charge>
<ChargeType>FUEL SURCHARGE</ChargeType>
<ChargeAmount>1.99</ChargeAmount>
</Charge>
</Charges>
<DeliveryTime>2013-02-06T23:59:00</DeliveryTime>
<CutoffTime>2013-02-05T20:30:00</CutoffTime>
<NextBusinessDayInd>N</NextBusinessDayInd>
</Service>
<Service type="9">
<TotalNet>
<Currency/>
<Amount>0.00</Amount>
</TotalNet>
<DeliveryTime>2013-02-07T23:59:00</DeliveryTime>
<CutoffTime>2013-02-05T16:30:00</CutoffTime>
<NextBusinessDayInd>N</NextBusinessDayInd>
</Service>
</Provider>
</rateresp:RateResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
BEGIN
RETURN XMLType(SOAP_RESPONSE);
END;
Now what I want is extract the body of the respons with a select .
Can someone help me because I don't understand this ?
I work with the Oracle Database XE 11g.
SQL developer.
Thanks already
Welcome to the forums.
As a tip for future posts [url https://forums.oracle.com/forums/thread.jspa?threadID=2174552#9360002]2. How do I ask a question on the forums?
That said, a basic example that pulls the contents of the body out is
declare
l_ws_rsp XMLTYPE;
l_body_rsp XMLTYPE;
begin
-- Retrieving the SOAP message
l_ws_rsp := DHL_SOAP_RESPONSE_XMLTYPE;
-- Extracting out the body
SELECT xt.body_xml
INTO l_body_rsp
FROM XMLTable(XMLNamespaces('http://schemas.xmlsoap.org/soap/envelope/' AS "SOAP-ENV"),
'/SOAP-ENV:Envelope/SOAP-ENV:Body/*'
PASSING l_ws_rsp
COLUMNS
body_xml XMLTYPE PATH '.') xt;
dbms_output.put_line(l_body_rsp.getClobVal());
end;If you Google
XMLTable soap site:forums.oracle.com
you can find plenty of examples on these forums regarding how to parse a web service response.
The bigger question is, what are you going to do with the data in the response. As the example above alludes too, you can actually parse the entire WS response with one SQL statement and return the results as one or more rows. Will you be performing PL/SQL logic on the returned results or will you simply be INSERTing them into the database for something else to use?
Similar Messages
-
Escaping characters in SOAP Envelope XML string
Hello,
I have a manual web service reference (i.e. a XML String parametrized with more fields from my apex page). Sometimes the web service call fails because the user can enter special XML characters in the text field (this in consequence makes the XML String invalid XML). Do you know any elegant way to deal with this problem? Having a process that does htf.escape_sc for each text field in the same page I have my text field is a bit complcated in my case.
Are there any other options?
Many thanks in advanceHi "user11085282",
you might try to wrap the user input in CDATA sections ... this is the "XML way" to have special characters in a document without escaping them. CDATA sections look
as follows
<tag><![CDATA[& & < <> >]]></tag>
http://www.w3schools.com/xml/xml_cdata.asp
Hope this helps ...
Carsten Czarski
Deutschsprachige APEX-Community: Tipps, Tricks, Best Practice
http://tinyurl.com/apexcommunity
SQL und PL/SQL: Tipps, Tricks & Best Practice
http://sql-plsql-de.blogspot.com
Twitter: @cczarski @oraclebudb -
XSLT To Remove Soap Envelope...
Hi,
I'm trying to use XSLT mapping to remove SOAP envelope from a soap response message. Facing some issues.
This is my response message(with soap envelope):
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<loginResponse xmlns="urn:enterprise.soap.sforce.com">
<result>
<passwordExpired>false</passwordExpired> <serverUrl>https://blitzna1.eng.salesforce.com/services/Soap/c/5.0</serverUrl> <sessionId>aaaaaaaaaaaaaaa</sessionId>
<userId>bbbbbbbbbb</userId>
</result>
</loginResponse>
</soapenv:Body>
</soapenv:Envelope>
This is my xsl program:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="soapenv:Body">
<xsl:copy-of select="soapenv:Body"/>
</xsl:template>
</xsl:stylesheet>
Where am I going wrong here?
Regards,
HarshThis is wrong:
<xsl:template match="soapenv:Body">
<xsl:copy-of select="soapenv:Body"/>
When you have template match="node", you can only work with sub nodes. So your XSLT searches for sub nodes of <i>Body</i> with the name <i>Body</i>.
You could use select=".", but you want to remove the SOAP envelope, so you have to remove the tag Body as well:
<xsl:template match="soapenv:Body">
<xsl:copy-of select="child::node()"/>
Regards
Stefan -
Is it possible to create own soap envolpe and body ?
Hi,
I developed a web service and deployed it on Web Logic server and Glassfish server.
But its soap envelope and soap body is different.
Glassfish Request :
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Header/>
<S:Body>
<ns2:getFunctionXML xmlns:ns2="http://webservices.onwardinfosys.com/">
<functionName>inotification_pkg_ver4.notifications_count</functionName>
<parameters>IOS_USER</parameters>
<appUserName>string</appUserName>
<appUserPass>string</appUserPass>
<deviceCode>string</deviceCode>
</ns2:getFunctionXML>
</S:Body>
</S:Envelope>
Weblogic Request :
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header />
<env:Body>
<getFunctionXML xmlns="http://webservices.onwardinfosys.com/">
<!--Optional:-->
<functionName xmlns="">INOTIFICATION_PKG_VER4.NOTIFICATIONS_COUNT</functionName>
<!--Zero or more repetitions:-->
<parameters xmlns="">IOS_USER</parameters>
<!--Optional:-->
<appUserName xmlns="">string</appUserName>
<!--Optional:-->
<appUserPass xmlns="">string</appUserPass>
<!--Optional:-->
<deviceCode xmlns="">string</deviceCode>
</getFunctionXML>
</env:Body>
</env:Envelope>Is it possible to have only one soap envelope and body even if I am deploying web service to different servers ?
Regards,
Ajay SharmaAjay Sharma wrote:
Is it possible to have only one soap envelope and body even if I am deploying web service to different servers ?Sure, it is just XML and XML is just text; you are free to just generate your own stuff in stead of using the webservices stack provided by your appserver. But you don't want to do that because what you have is just fine. -
How to build my own SOAP envelope
Hi
after a lot of work I have now realised that my SOAP to SOAP scenario can't use SAP XI std SOAP ENVELOPE on the receiver part.
How to I build my own SOAP ENV in my RECEIVER payload? iMaybe in the mapping or in the WSDL/XSD?
Any guides or experienses are welcome
hope someone can help
cheersHi Bowie,
Here is one possible approach...
1) Set "Do Not Use SOAP Envelope" in your Receiver SOAP Adapter.
2) Add this xsl as a second step in your interface mapping.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Body>
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</env:Body>
</env:Envelope>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
You can then modify the soap envelope nodes above to create what you need.
-Russ -
WCF request with utl_dbws how to add Header into SOAP envelope
I’m trying to make WCF (Windows Communication Foundation) request and using for that utl_dbws package.
After making request (calling utl_dbws.invoke) it will give error “ORA-29532: Java call terminated by uncaught Java exception: javax.xml.rpc.soap.SOAPFaultException: The server was unable to process the request due to an internal error. For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect t”
I turned on logging (utl_dbws.set_logger_level) I see that system sends standard SOAP envelope and does not have Header at all. How can I use my own SOAP envelope and/or add Header.
All info that logging give is:
ServiceFacotory: oracle.j2ee.ws.client.ServiceFactoryImpl@eec8c59c
WSDL: null
Service: oracle.j2ee.ws.client.BasicService@7c110d23
*** Created service: -677524827 - oracle.jpub.runtime.dbws.DbwsProxy$ServiceProxy@562bd0c4 ***
ServiceProxy.get(-677524827) = oracle.jpub.runtime.dbws.DbwsProxy$ServiceProxy@562bd0c4
getOperationInfo return NULL: port={http://tempuri.org/Service/}BasicHttpBinding_Service, operation={http://tempuri.org/Service/}GetLov
setProperty(javax.xml.rpc.soap.http.soapaction.use, true)
setProperty(javax.xml.rpc.soap.http.soapaction.uri, http://tempuri.org/Service/GetLov)
setProperty(javax.xml.rpc.encodingstyle.namespace.uri, http://www.w3.org/2005/08/addressing)
setProperty(javax.xml.rpc.security.auth.username, DefaultUser)
setProperty(javax.xml.rpc.security.auth.password, MySecretPassword)
<GetLOV xmlns="http://tempuri.org/"> <request xmlns:d4p1="http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <d4p1:AgentCode>AGENT</d4p1:AgentCode> <d4p1:Language>ENG</d4p1:Language> <d4p1:ProcessName>test</d4p1:ProcessName> </request></GetLOV>
Attribute 0: http://tempuri.org/: xmlns, http://tempuri.org/
createElement(GetLOV,null,http://tempuri.org/)
Attribute 0: http://tempuri.org/: xmlns, http://tempuri.org/
dbwsproxy.element.node.child.0: 1, null
dbwsproxy.add.map: d4p1, http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request
Attribute 0: http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request: xmlns:d4p1, http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request
dbwsproxy.add.map: i, http://www.w3.org/2001/XMLSchema-instance
Attribute 1: http://www.w3.org/2001/XMLSchema-instance: xmlns:i, http://www.w3.org/2001/XMLSchema-instance
createElement(request,null,http://tempuri.org/)
dbwsproxy.add.soap.element.namespace: d4p1, http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request
Attribute 0: http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request: xmlns:d4p1, http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request
dbwsproxy.add.soap.element.namespace: i, http://www.w3.org/2001/XMLSchema-instance
Attribute 1: http://www.w3.org/2001/XMLSchema-instance: xmlns:i, http://www.w3.org/2001/XMLSchema-instance
dbwsproxy.element.node.child.0: 1, null
dbwsproxy.lookup.map: d4p1, http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request
createElement(d4p1:AgentCode,null,http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request)
dbwsproxy.text.node.child.0: 3, E01306
dbwsproxy.element.node.child.1: 1, null
dbwsproxy.lookup.map: d4p1, http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request
createElement(d4p1:Language,null,http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request)
dbwsproxy.text.node.child.0: 3, ENG
dbwsproxy.element.node.child.2: 1, null
dbwsproxy.lookup.map: d4p1, http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request
createElement(d4p1:ProcessName,null,http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request)
dbwsproxy.text.node.child.0: 3, tesr
request:
<GetLOV xmlns="http://tempuri.org/">
<request xmlns:d4p1="http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">
<d4p1:AgentCode>AGENT</d4p1:AgentCode>
<d4p1:Language>ENG</d4p1:Language>
<d4p1:ProcessName>test</d4p1:ProcessName>
</request>
</GetLOV>
13.05.2010 14:17:28 oracle.j2ee.ws.client.ClientMessages infoAboutToInvokeCallForEndpoint
INFO: Trying to connect to URL: https://x.y.z/WS/ Service.svc
13.05.2010 14:17:30 oracle.j2ee.ws.client.StreamingSender _sendImpl
FINE: StreamingSender.request:<?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><env:Body><GetLOV xmlns="http://tempuri.org/"><request xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d4p1="http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request"><d4p1:AgentCode>AGENT</d4p1:AgentCode><d4p1:Language>ENG</d4p1:Language><d4p1:ProcessName>test</d4p1:ProcessName></request></GetLOV></env:Body></env:Envelope>
13.05.2010 14:17:30 oracle.j2ee.ws.client.StreamingSender _sendImpl
FINE: StreamingSender.response:<?xml version="1.0" encoding="UTF-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault><faultcode xmlns:a="http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher">a:InternalServiceFault</faultcode><faultstring xml:lang="et-EE">The server was unable to process the request due to an internal error. For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs.</faultstring></s:Fault></s:Body></s:Envelope>
Exception in thread "Root Thread" javax.xml.rpc.soap.SOAPFaultException: The server was unable to process the request due to an internal error. For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs.
at oracle.j2ee.ws.client.StreamingSender._raiseFault(StreamingSender.java:559)
at oracle.j2ee.ws.client.StreamingSender._sendImpl(StreamingSender.java)
at oracle.j2ee.ws.client.StreamingSender._send(StreamingSender.java:112)
at oracle.j2ee.ws.client.dii.CallInvokerImpl.directInvoke(CallInvokerImpl.java:705)
at oracle.j2ee.ws.client.dii.BasicCall.directInvoke(BasicCall.java:692)
at oracle.j2ee.ws.client.dii.BasicCall.invoke(BasicCall.java:598)
at oracle.jpub.runtime.dbws.DbwsProxy$CallProxy.invokeProxy(Unknown Source)
at oracle.jpub.runtime.dbws.DbwsProxy$CallProxy.access$2600(Unknown Source)
at oracle.jpub.runtime.dbws.DbwsProxy.invokeProxy(Unknown Source)HTTP is HTPP... mostly.
In other words, the application protocol is stand and specified in RFC2616 (http://www.w3.org/Protocols/rfc2616/rfc2616.html)
The exception is specific proprietary extensions.. like for example Microsoft's NTLM authentication handshake.
The UTL_HTTP interface supports the protocol pretty well as per the protocol's specification. So using it to interact with a a web service should not be a major issue. The protocol is standard (e.g. POST command is used to supply the payload to the web service). The only real issue is formatting the payload for that as per what the web service expect. And that has nothing to do with HTTP itself - or UTL_HTTP. It is simply the delivering mechanism.
Getting that mechanism to work is fairly easy and should not pose a problem. Instead I suggest you focus on exactly how the HTTP payload needs to look like. Does that web service expects any specific name-values in the header? What does it expect in the body? Etc. -
Dear all,
I have configured a scenario for which the SOAP adapter is used. When I try to send a message like this:
<ns0:Envelope xmlns:ns0="http://www.w3.org/2001/12/soap-envelope">
<ns0:Body>......
I receive message "SOAP:Server Server Error XIAdapter MalformedMessageException "
When the namespace "http://www.w3.org/2001/12/soap-envelope" is replaced with
"http://schemas.xmlsoap.org/soap/envelope/" the message is processed correctly.
Does this mean that any SOAP messages to XI MUST have namespace "http://schemas.xmlsoap.org/soap/envelope/" for the SOAP envelope??
Kind regards,
John.Hello Bhavesh,
No, the message is sent from a third party to the XI system using SOAP. In their message the SOAP envelope is created with the namespace as I stated in my previous post.
When I edit this message by changing the namespace the message is processed without errors. It seems that there is a check for namespace "http://schemas.xmlsoap.org/soap/envelope" in the SOAP adapter, but I cannot configure out why.
Kind regards,
John. -
'/soap:Envelope ' in extract throws invalid token error
I'm receiving xml via webservice/soap and placing in an XMLTYPE table. Upon trying to execute a test query:
SELECT
EXTRACTVALUE(VALUE(d),'Destinations/CountryID') AS ID
FROM X_TEST p,
TABLE (xmlsequence(EXTRACT(p.object_value,'/soap:Envelope/soap:Body/GetUserDestinationResponse/GetUserDestinationResult/DestinationResults/DestinationsList//Destinations'))) d
I get an error similar to: (note path here in error is diff than above extract statement)
ORA-31011: XML parsing failed
ORA-19202: Error occurred in XML processing
LPX-00601: Invalid token in: 'soap:Envelope/soap:Body/GetUserDestinationResponse/GetUserDestinationResult/DestinationResults/DestinationsList/Destinations/DestinationList/Destination//Provider'
Without the soap:Envelope/soap:Body there is no error. Is there a problem using the ':' here?
Here's a snippet of the stored xml:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetUserDestinationsResponse xmlns="http://xxx.xxx.xxx.xx/somesite_ws/">
<GetUserDestinationsResult>
<DestinationResults>
<DestinationsList>
<Destinations>
<CountryID>101</CountryID>
<CountryDescription>Indonesia</CountryDescription>
</Destinations>
</DestinationList>
</DestinationResults>
</GetUserDestinationsResult>
</GetUserDestinationsResponse>
</soap:Body>
</soap:Envelope>Thanks,
that set me in the right direction - I had tried the third parm before but must not have been just right being that there are multiple namespaces given. Appears I have to always use the namespace parm to accurately obtain the data. To conclude - this is what I ended up with to get this returning data properly:
SELECT
EXTRACTVALUE(VALUE(d),'/Destination/DestinationId', 'xmlns="http://xxx.xxx.xxx.xx/some_ws/"') AS ID,
Get_Point(EXTRACTVALUE(VALUE(d),'/Destination/Longitude', 'xmlns="http://xxx.xxx.xxx.xx/some_ws/"'),
EXTRACTVALUE(VALUE(d),'/Destination/Latitude', 'xmlns="http://xxx.xxx.xxx.xx/some_ws/"')) AS geom,
EXTRACTVALUE(VALUE(p),'/Provider/ProviderName', 'xmlns="http://xxx.xxx.xxx.xx/some_ws/"') AS provider_name,
EXTRACTVALUE(VALUE(p),'/Provider/ProviderSpecific/HospitalInformation/whoAvainFlu', 'xmlns="http://xxx.xxx.xxx.xx/some_ws/"') AS avaianflu,
VALUE(p) AS xmlb
FROM X_MEDAIRE xml
,TABLE (xmlsequence(EXTRACT(xml.object_value,
'/soap:Envelope/soap:Body/*', 'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"'
))) e
,TABLE (xmlsequence(EXTRACT(VALUE(e),
'/long/path/after/soap', 'xmlns="http://xxx.xxx.xxx.xx/some_ws/"' ))) d
,TABLE (xmlsequence(EXTRACT(VALUE(d),
'/Destination/ProviderList/Provider', 'xmlns="http://xxx.xxx.xxx.xxx/some_ws/"' ))) p
WHERE
EXTRACTVALUE(VALUE(p),'/Provider/ProviderType', 'xmlns="http://xxx.xxx.xxx.xxx/some_ws/"') = 'Hospital' -
JAXB 1.3 can't parse W3 SOAP 2003-05 envelope XML schema
Hello,
I was trying to use JAXB to parse the MMAP schema from the SMS Forum
(http://www.smsforum.net/schemas/mmap/v1.0/mmap.xsd). I finally
tracked it down to XJC choking on the included SOAP envelope schema's
use of the xml:lang attribute for a tag called reasontext. Here's the
pared-down test case:
C:\java\src\baz>%JWSDP_HOME%\jaxb\bin\xjc.bat http://www.w3.org/2003/05/soap-envelope/soap-envelope.xsd
%JWSDP_HOME%\jaxb\bin\xjc.bat http://www.w3.org/2003/05/soap-envelope/soap-envelope.xsd
parsing a schema...
[ERROR] src-resolve: Cannot resolve the name 'xml:lang' to a(n) attribute declaration component.
line 97 of soap-envelope.xsd
[ERROR] src-ct.0.1: Complex Type Definition Representation Error for type 'reasontext'. Element 'attribute' is invalid, misplaced, or occurs too often.
line 97 of soap-envelope.xsd
Failed to parse a schema.
C:\java\src\baz>I believe that the relevant portions of the schemas and namespaces in
question are:
http://www.w3.org/2003/05/soap-envelope/soap-envelope.xsd
<xs:complexType name="reasontext">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute ref="xml:lang" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>http://www.w3.org/2001/XMLSchema.xsd
<xs:complexType name="attribute" mixed="false">
<xs:complexContent>
<xs:extension base="xs:annotated">
<xs:sequence>
<xs:element name="simpleType" minOccurs="0" type="xs:localSimpleType" />
</xs:sequence>
<xs:attributeGroup ref="xs:defRef" />
<xs:attribute name="type" type="xs:QName" />
<xs:attribute name="use" use="optional" default="optional">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="prohibited" />
<xs:enumeration value="optional" />
<xs:enumeration value="required" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="default" type="xs:string" />
<xs:attribute name="fixed" type="xs:string" />
<xs:attribute name="form" type="xs:formChoice" />
</xs:extension>
</xs:complexContent>
</xs:complexType>http://www.w3.org/2001/XMLSchema.xsd
<xs:attributeGroup name="defRef">
<xs:annotation>
<xs:documentation>for element, group and attributeGroup, which both define and reference</xs:documentation>
</xs:annotation>
<xs:attribute name="name" type="xs:NCName" />
<xs:attribute name="ref" type="xs:QName" />
</xs:attributeGroup>http://www.w3.org/XML/1998/namespace
The namespace whose name is http://www.w3.org/XML/1998/namespace is
bound by definition to the prefix xml: according to Namespaces in XML,
W3C Recommendation 14 Jan 1999. Note that unlike all other XML
namespaces, both the name and the prefix are specified; i.e., if you
want XML 1.0 processors to recognize this namespace, you must use the
reserved prefix xml:.
xml:lang and xml:space
As of the last update of this document, the XML 1.0 Specification
defines two attribute names in this namespace:
xml:lang
Designed for identifying the human language used in the scope of the
element to which it's attached.
.I'm no XML schema expert, but it looks to me like "name" and "ref"
are both valid attributes for an <xs:attribute> tag and that the XML
namespace standard requires XML processors to recognize the xml:lang
attribute. Hence, this appears to me to be a bug in JAXB.
A secondary bug is that the original error message left the name of
the offending included schema blank:
C:\java\src\foo>d:\java\jwsdp\jwsdp-1.3\jaxb\bin\xjc.bat http://www.smsforum.net/schemas/mmap/v1.0/mmap.xsd
parsing a schema...
[ERROR] src-resolve: Cannot resolve the name 'xml:lang' to a(n) attribute declaration component.
line 97 of
[ERROR] src-ct.0.1: Complex Type Definition Representation Error for type 'reasontext'. Element 'attribute' is invalid, misplaced, or occurs too often.
line 97 of
Failed to parse a schema.
C:\java\src\foo>In case it helps with problem diagnosis, I'm running with J2SDK 1.4.2
and have copied the endorsed jar files into the JRE lib as instructured
with JAXB:
C:\java\src\baz>java -version
java -version
java version "1.4.2"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-b28)
Java HotSpot(TM) Client VM (build 1.4.2-b28, mixed mode)
C:\java\src\baz>dir %JAVA_HOME%\jre\lib\endorsed
dir %JAVA_HOME%\jre\lib\endorsed
Volume in drive D has no label.
Volume Serial Number is 70AE-6E52
Directory of D:\java\j2se\j2sdk1.4.2\jre\lib\endorsed
03/31/2004 09:41 AM <DIR> .
03/31/2004 09:41 AM <DIR> ..
03/29/2004 01:28 PM 56,619 dom.jar
03/29/2004 01:28 PM 60,963 sax.jar
03/29/2004 01:28 PM 2,823,241 xalan.jar
03/29/2004 01:28 PM 2,667,618 xercesImpl.jar
10/10/2003 06:36 PM 1,379,810 xsltc.jar
6 File(s) 6,989,573 bytes
2 Dir(s) 7,889,731,584 bytes free
C:\java\src\baz>I'm quite interested in the resolution of this issue as I'm stopped in
my tracks on progress here. Help with resolution, whether in JAXB or
my usage of it, will be much appreciated. I did a search of existing
issues but didn't notice a duplicate. Thanks in advance.I have also come across a similar problem with validating an xml file with an xml:lang attribute. It seems to be common across the schema validation and dtd validation. I get the following error with both schema and dtd validation:
Validation Error Msg (0): unexpected attribute "xml:lang"
Validation Error Location (0): FreeFormText
The test file extract looks like this:
<FreeFormText xml:lang="EN">Pelle</FreeFormText>
The schema defines the node as:
<xs:complexType name="FreeFormText">
<xs:simpleContent>
<xs:extension base="FreeFormTextType">
<xs:attribute name="lang" type="xs:language"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
and the dtd defines the node as:
<!ELEMENT FreeFormText
(#PCDATA)>
<!ATTLIST FreeFormText xml:lang CDATA #IMPLIED >
This looks like a bug in JAXB to me aswell. Any help on it would be much appreciated as i am also stuck. -
OSB: how to remove soap envelope from the $body
Hi,
In Assign activity when i assign: xquF1:url-decode(fn-bea:serialize($body),"UTF-8") = variable1,i am getting:
$variable1 =
<soap-env:Body xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<MESSAGE>
<aa>12</aa>
<bb>34</bb>
</MESSAGE>
</soap-env:Body>
How should i remove 'soap-env:Body' from the above xml. I need only:
$variable1 =
<MESSAGE>
<aa>12</aa>
<bb>34</bb>
</MESSAGE>
Kindly advise how to acheive the same.
Thanks in advance.
Edited by: user9223904 on Apr 17, 2013 2:25 AM
Edited by: user9223904 on Apr 17, 2013 2:26 AMjust use $body/* and you will have what u wanted.
-
Hi all,
Can any body please suggest me the steps to capture the SOAP envelope using XML SPY?
Also while sending a SOAP request through XML Spy to server, i get an empty response. I tried to monitor the packets passing through the network card with the destination specified in the SOAP request, there was such message. Can any body please suggest me the possible reasons and the solution for the same?
Thanks and best regards,
Kulwant
Thanks and best regards,
Kulwant SinghHi
If you are getting the response back as blank response so check the request you are sending to the web serviceor RFC have any response information or it is blank.
or
if u have use the exactly once option in the adapter then u will get the blank response while sending the request using the xml spy.
Thanks
Rinku -
SOAP Adapter without SOAP envelope sets contenttype to application/xml
Hi,
I wrote a adaptermodul for the SOAP adapter to create a SOAP:HEADER.
I disable the SOAP envelope in the communication channel.
Now I get a error from the WebService Provider because the SOAP Adapter sends with Content-Type application/xml and not text/xml. I set the content-type in the adapter module but it seens to not work.
How can I correct this ?
Regards,
GeraldHi
Simple answer is NO, it is not possible (without party/channel/ service etc to process the request)
but it is worth a try to check if the URL encoding works.. though I have not tried..
for example sending the hex value of the "?" - %3F%
URL is a generic topic, you can search that to get more information
(ex : http://www.blooberry.com/indexdot/html/topics/urlencoding.htm)
Regards
Vishnu -
Hi there,
Well, it is mysterious - not to say frightning !
When I first start my tomcat I get an Exception like:; Could not load com.sun.xml.messaging.saaj.soap.Envelope
The second time it runs well. No Exception about classloading. And the app is nice.
Hmm, why ? Can�t find out.
I think that Exception has to have some relation to jars and where they are placed.
According to the JAXWS-page I placed:
jaxb-api.jar, jaxws-api.jar, jsr173_api.jar, saaj-api.jar
in my %JRE_HOME%\lib\endorsed\
so far so good !
The rest of the needed jars to run JAX-WS Webservices are in my WEB-INF/lib FOLDER
activation.jar and so on
Any Ideas ?
Here is the Exception I get when I invoke the Service
INFO: Illegal access: this web application instance has been stopped already. Could not load com.sun.xml.messaging.saaj.soap.Envelope. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1238)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at com.sun.xml.messaging.saaj.soap.ver1_1.Message1_1Impl.getSOAPPart(Message1_1Impl.java:78)
at com.sun.xml.ws.message.AbstractMessageImpl.readAsSOAPMessage(AbstractMessageImpl.java:177)
at com.sun.xml.ws.client.dispatch.SOAPMessageDispatch.toReturnValue(SOAPMessageDispatch.java:93)
at com.sun.xml.ws.client.dispatch.SOAPMessageDispatch.toReturnValue(SOAPMessageDispatch.java:57)
at com.sun.xml.ws.client.dispatch.DispatchImpl.doInvoke(DispatchImpl.java:188)
at com.sun.xml.ws.client.dispatch.DispatchImpl.invoke(DispatchImpl.java:192)
at idff.server.service.ArtifactResolver.resolve(ArtifactResolver.java:101)
at servlets.AssertionConsumerServlet.doPost(AssertionConsumerServlet.java:149)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:619)
09.08.2007 14:40:12 org.apache.catalina.core.StandardWrapperValve invoke
SCHWERWIEGEND: Servlet.service() for servlet AssertionConsumerServlet threw exception
java.lang.NoClassDefFoundError: com/sun/xml/messaging/saaj/soap/Envelope
at com.sun.xml.messaging.saaj.soap.ver1_1.Message1_1Impl.getSOAPPart(Message1_1Impl.java:78)
at com.sun.xml.ws.message.AbstractMessageImpl.readAsSOAPMessage(AbstractMessageImpl.java:177)
at com.sun.xml.ws.client.dispatch.SOAPMessageDispatch.toReturnValue(SOAPMessageDispatch.java:93)
at com.sun.xml.ws.client.dispatch.SOAPMessageDispatch.toReturnValue(SOAPMessageDispatch.java:57)
at com.sun.xml.ws.client.dispatch.DispatchImpl.doInvoke(DispatchImpl.java:188)
at com.sun.xml.ws.client.dispatch.DispatchImpl.invoke(DispatchImpl.java:192)
at idff.server.service.ArtifactResolver.resolve(ArtifactResolver.java:101)
at servlets.AssertionConsumerServlet.doPost(AssertionConsumerServlet.java:149)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:619)
Listening for transport dt_shmem at address: bundled_tomcat
Anybody help, please !First, thanks for your reply jitu.
I don�t get this exception anymore.
Well, your hint was quite right, so I think I may give you the duke stars.
I found out that putting the jars into the shared/lib don�t work. Maybe it is because I am running 3 tomcat instances at the same time.
I put all the Jax-ws libs into the tomcat_home/common/lib directory.
And left the endorsed libs in the java endoresed directory.
putting the endorsed libs in the tomcat_home/common/lib/endorsed may also work.
regards and thanks,
footman -
BPEL remote fault ??? invalid SOAP envelope: body is empty
Heres the clever bit, The invoke actually works calls the web interface which does what its meant to do. The web interface then passes back a correctly formed empty message (accepted by XMLSpy and soapUI ) in BPEL I get a remote fault
<remoteFault xmlns="http://schemas.oracle.com/bpel/extension"><part name="summary"><summary>exception on JaxRpc invoke: invalid SOAP envelope: body is empty</summary>
</part></remoteFault>Hi,
Did any of you solve this issue? I'm having the same problem.
Any help would be appreciated. Thanks in advance,
Zaloa -
Enclosing Transformed XML in SOAP envelope
All,
I am currently facing difficulty to send a XML document via HTTP Post enclosed in a SOAP envelope.
1. The BPEL process, using database polling feature of DB Adapter, will get the records from the database.
2. Transform the message
3. Now I want to enclose the transformed message into a SOAP envelope and send it via HTTP Post to a third party system.
I am facing difficulty in Step 3. Could some one suggest me how to enclose the XML messages inside a SOAP envelope and some pointers to use HTTP Adapter?
Thanks in advanceI just found out that HTTP binding activity does not support XMLs with complex types.(Note ID: 1328955.1) Now I guess the only choice for me is to use Java or any other programming language to do the HTTP post.
This is what i am thinking.
1. Create a XML file with the required format using SOA
2. Use a Java program to pick the file from a location and send it to the target URL( enclosing it in a SOAP envelope)
3. Get the response and update oracle status tables.
The trouble i will face here is to pass the file name , target URL as the parameters.
Is there a way to create this program and orchestrate using BPEL? Meaning- call this java program after i finish generating the file and pass the file name and the target URL as parameter?
Please suggest if a better approach could be followed for this.
Thanks,
Dwarak
Maybe you are looking for
-
Fireworks instead of Illustrator?
Hi, we've been using Illustrator CS3 here for web page mock-ups for a while now. It initially was a bit buggy, but things have gotten better. Most people don't realize it has the same slicing capabilities of Image Ready. But we really use style sheet
-
Unable to start DB2 9.5 in Solaris due to SQL1042C
Hi Seniors, Seeking assistance or clue on the below issue we facing recently. My QAS ERP is completely down for sometime due to this issue. Error message when starting DB2
-
Hello, I have parsed a text file and want to use a java regex pattern to get the status like "warning" and "ok" ("ok" should follow the "warning" then need to parser it ), does anyone have idea? How to find ok that follows the warning status? thanks
-
Configuring AGENT on target server
Hi, Actually i have installed client components on my system....and ODI server component(agent) on my target instance.....now how can i configure the agent on my target server so that it can be used my multiple users.....how can i create a scheduler
-
When using Network Utility, does Link Speed tell you the actual speed of the network?
I'm trying to see whether a power line adapter I installed in my home network is faster accessing the internet than the WiFi from my Time Capsule. Using Apple's Network Utility, my power line/ethernet connection reads as being 1Gb/s, which is obvious