Response with multiple namespaces...
Hi there!
We have several webservices working as "document", they receive a XML document and send a XML document as response.
The problem is that the returned document has a namespace prefix for each XML tag. All of then with the same name space:
[n1:enviar_ofersecResponse xmlns:n1="a name space"]
[n2:IdentificacionMensaje xmlns:n2="a name space" v="respuesta_ofersecen01_20040921.1"/]
[n3:FechaHoraMensaje xmlns:n3="a name space" v="2004-09-21T12:07:30+02:00"/]
[n4:IdentificacionRemitente xmlns:n4="a name space" v="HC_G"/]
[n5:FuncionRemitente xmlns:n5="a name space" v="A08"/]
... and so on...
How avoid this different prefix with the same name space for each tag?. Our xml documents are big... about 5 M... so it's a waste of space and time process all those prefix and namespaces...
Thanks in advance!.
Hello,
We are experiencing this as well as we are upgrading from WLS 7.0 to 8.1. WLS 7.0 worked as expected. We made no changes to the webservices.xml between 7.0 and 8.1. This response element snippet is an example of 7.0 compared to 8.1:
***BEFORE - wls 7***
<ns1:memberFound>Y</ns1:memberFound>
***AFTER - wls 8.1***
<ns1:memberFound xmlns:ns1="http://www.definityhealth.com/webservice/member/memberlookup">Y</ns1:memberFound>
I'm pursuing this with support and will report back findings here.
thanks,
chad.
Similar Messages
-
XML Structured Index with multiple namespaces
Hi,
I'm having some trouble creating an xmlindex with structured component on a clob xmltype column without registered schema, whose data uses multiple namespaces.
The code I'm using atm:
CREATE TABLE "DECLARATIONS"
"ID" NUMBER(19,0),
"XML" "SYS"."XMLTYPE"
CREATE INDEX decl_header_ix ON "DECLARATIONS"(xml) INDEXTYPE IS XDB.XMLINDEX
PARAMETERS ('PATHS (INCLUDE (/emcs:emcsDeclaration/emcs:header//*)
NAMESPACE MAPPING (xmlns:emcs="http://www.myurl.eu/myapp/schema/emcs/nl"))');
INSERT INTO "DECLARATIONS" VALUES (1,'
<?xml version = ''1.0'' encoding = ''UTF-8'' standalone = ''yes''?>
<emcs:emcsDeclaration xsi:schemaLocation="http://www.myurl.eu/myapp/schema/emcs/nl emcs_domain.xsd"
xmlns:common="http://www.myurl.eu/myapp/schema/common"
xmlns:emcs="http://www.myurl.eu/myapp/schema/emcs/nl"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<emcs:header>
<common:identifier>70</common:identifier>
<common:declarationSequenceNumber>54566</common:declarationSequenceNumber>
<common:dateCreated>2010-10-21-01:00</common:dateCreated>
<common:status>01 Draft e-AAD in preparation</common:status>
</emcs:header>
</emcs:emcsDeclaration>');A this moment it's not desirable for us to register the schemas used in oracle. According to the documentation I should be able to add a structured component to the index as follows:
BEGIN
DBMS_XMLINDEX.registerParameter('MY_XSI_GROUP_PARAMETER'
, 'ADD_GROUP GROUP MY_XSI_GROUP
XMLTABLE decl_header
XMLNAMESPACES (''http://www.myurl.eu/myapp/schema/emcs/nl'' AS emcs,
''http://www.myurl.eu/myapp/schema/common'' AS common),
COLUMNS
status VARCHAR2(30) PATH ''/emcs:emcsDeclaration/emcs:header/common:status/text()''
END;
ALTER INDEX DECL_HEADER_IX PARAMETERS('PARAM MY_XSI_GROUP_PARAMETER');However this results in an ORA-00904: invalid identifier. After some experimenting it seems that oracle tries to parse the namespace URLs as identifiers (even tho http://download.oracle.com/docs/cd/E14072_01/appdev.112/e10492/xdb_indexing.htm#BCGJAAGH & http://download.oracle.com/docs/cd/E14072_01/appdev.112/e10492/xdb_xquery.htm#BABJCHCC specify the former), so I swapped them around:
BEGIN
DBMS_XMLINDEX.dropParameter('MY_XSI_GROUP_PARAMETER');
DBMS_XMLINDEX.registerParameter('MY_XSI_GROUP_PARAMETER'
, 'ADD_GROUP GROUP MY_XSI_GROUP
XMLTABLE decl_header
XMLNAMESPACES (emcs ''http://www.myurl.eu/myapp/schema/emcs/nl'',
common ''http://www.myurl.eu/myapp/schema/common''),
COLUMNS
status varchar2(30) PATH ''/emcs:emcsDeclaration/emcs:header/common:status/text()''
END;
ALTER INDEX DECL_HEADER_IX PARAMETERS('PARAM MY_XSI_GROUP_PARAMETER');Oracle seems to get a bit further with this, resulting in a ORA-19102: XQuery string literal expected. Here I pretty much hit a dead end. Removing the xmlnamespaces declaration altogether leads to a ORA-31013: Invalid XPATH expression. Going through the examples on http://www.liberidu.com/blog/?p=1805 works fine, but as soon as I try to add namespaces to it they stop working as well.
So my question is: how do I get xmlnamespaces (with non-default namespaces) to work in a structured xmlindex component?If you want, I can help you tomorrow. Call me at my nieuwegein office or mail me at marco[dot]gralike[at]amis[dot]nl
I have some time tomorrow, so I can help you with this. My next presentation for UKOUG will be on XML indexes strategies anyway...
In the meantime and/or also have a look at:
XML Howto's (http://www.liberidu.com/blog/?page_id=441) specifically:
XML Indexing
* Unstructured XMLIndex (part 1) – The Concepts (http://www.liberidu.com/blog/?p=228)
* Unstructured XMLIndex (Part 2) – XMLIndex Path Subsetting (http://www.liberidu.com/blog/?p=242)
* Unstructured XMLIndex (Part 3) – XMLIndex Syntax Dissected (http://www.liberidu.com/blog/?p=259)
* Unstructured XMLIndex Performance and Fuzzy XPath Searches (http://www.liberidu.com/blog/?p=310)
* Structured XMLIndex (Part 1) – Rules of Numb (http://www.liberidu.com/blog/?p=1791)
* Structured XMLIndex (Part 2) – Howto build a structured XMLIndex (http://www.liberidu.com/blog/?p=1798)
* Structured XMLIndex (Part 3) – Building Multiple XMLIndex Structures (http://www.liberidu.com/blog/?p=1805)
The posts were based on Index for XML with Repeated Elements maybe that is a bit better to read than on my notepad on the internet (aka blog)
Edited by: Marco Gralike on Oct 28, 2010 7:51 PM -
XPath expression with multiple namespaces?
Hello all.
I have been scouring the forums and Google and can't seem to find anything similar to my problem.
I have the following XML with three namespaces. Two are defined in the root element and the third is defined in the the IdSession element. To make things even more confusing, the second and third namespaces have the same prefix, 'f'.
This is the xml:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<NamespaceTestCall xmlns="http://my.default/namespace"
xmlns:f="http://my.second/namespace">
...<f:Level1>
......<f:IdSession xmlns:f="http://my.third/namespace">12345</f:IdSession>
......<Language>ENG</Language>
...</f:Nivel1>
</NamespaceTestCall>
My question is, how do I get at the IdSession element? Don't I need to create an XPath object and assign it more than one NamespaceContext?
This is what I am doing:
Document xmlDocument = loadXML(xmlSource);
XPath xpathEvaluator = XPathFactory.newInstance().newXPath();
xpathEvaluator.setNamespaceContext(new NamespaceContextProvider("a", "http://my.third/namespace"));
... xpathEvaluator.evaluate("//a:IdSession", ...);
This code works but it might not return the 'IdSession' I want, since by searching like this '//a:IdSession' it is looking in the whole document. If there were another 'IdSession' somewhere else in the document with the same URI, it would be returned. I want the 'IdSession' that lives inside of 'Level1'.
So what I would like to do is something like this:
... xpathEvaluator.evaluate("/*/Level1/a:IdSession", ...);
But this does NOT work because 'Level1' has its own namespace. So what it seems like I need to do is the following:
... xpathEvaluator.evaluate("/*/b:Level1/a:IdSession", ...);
Having already added the 'Level1' namespace to the XPath object, with the prefix 'b'. But unlike JDOM, there is no 'add' functionality, only 'set', meaning if you call set twice the second call overwrites the first.
Is there anyway to do this?
Many thanks!
BobHello,
Sorry, that was my bad. I should have explained that NamespaceContextProvider is nothing more than my implementation of the NamespaceContext interface. The way I did it, I simply implemented getNamespaceURI() and getPrefix(). And the constructor accepted two parameters -- prefix and URI. So my problem was that when I assigned this NamespaceContext to my XPath object it would only have one prefix and one URI.
But I found an implementation here:
http://www.oreillynet.com/cs/user/view/cs_msg/50304
that instead of only having one prefix and URI uses a map. Thus its method setNamespace() adds the prefix and URi to the map, and getPrefix() and getPrefixes() retrieve them from the map.
Now when I want to use more than one namespace I simply call setNamespace() as many times as necessary, adding a prefix and URI pair each time, and when I am done I assign it to my XPath object.
And it works!
Thanks for the response!
Bob -
XSD validation with multiple namespaces
Hi All,
I'm trying to validate some XML using an XSD that contains multiple namespace schema descriptions, as such, the main XSD file must import an XSD for each namespace.
The difficulty is that I cannot seem to find a way (in Oracle) to run a XSD validation using this (multi-XSD file) method.
Has anyone out there tackled a similar problem?
Cheers,
Bencheck out the class
CL_XML_SCHEMA
Regards
Raja -
Using xpath.evaluate(): xpath exp with multiple namespaces
Hi,
I have to evaluate a xpath expression with parent node and child node having different namespaces. Like : env:parent/mig:child.
I have set the namespacecontext for the child node[i.e., for the prefix 'mig'.]
But am getting this error :
javax.xml.transform.TransformerException: Prefix must resolve to a namespace: env
How can I set the namespace context for both the parent and child nodes? Or is there are any other way of doing it?
I cant use //mig:child as the requirement needs the whole xpath expression [env:parent/mig:child] to be given as input for the xpath.evaluate() method.
Here's the code :
File file = new File("D:\\Backup\\XMLs\\test.xml");
Document xmlDocument = builder.parse(file);
XPath xpathEvaluator = XPathFactory.newInstance().newXPath();
xpathEvaluator.setNamespaceContext(new NamespaceContextProvider("env", "http://xmlns.oracle.com/apps/account/1.0"));
NodeList nodeList =
(NodeList)xpathEvaluator.evaluate("/env:parent/mig:child", xmlDocument,
XPathConstants.NODESET);
xpathEvaluator.setNamespaceContext(new NamespaceContextProvider("mig", "http://xmlns.oracle.com/apps/account/1.0"));
Thanks in advance.If you want, I can help you tomorrow. Call me at my nieuwegein office or mail me at marco[dot]gralike[at]amis[dot]nl
I have some time tomorrow, so I can help you with this. My next presentation for UKOUG will be on XML indexes strategies anyway...
In the meantime and/or also have a look at:
XML Howto's (http://www.liberidu.com/blog/?page_id=441) specifically:
XML Indexing
* Unstructured XMLIndex (part 1) – The Concepts (http://www.liberidu.com/blog/?p=228)
* Unstructured XMLIndex (Part 2) – XMLIndex Path Subsetting (http://www.liberidu.com/blog/?p=242)
* Unstructured XMLIndex (Part 3) – XMLIndex Syntax Dissected (http://www.liberidu.com/blog/?p=259)
* Unstructured XMLIndex Performance and Fuzzy XPath Searches (http://www.liberidu.com/blog/?p=310)
* Structured XMLIndex (Part 1) – Rules of Numb (http://www.liberidu.com/blog/?p=1791)
* Structured XMLIndex (Part 2) – Howto build a structured XMLIndex (http://www.liberidu.com/blog/?p=1798)
* Structured XMLIndex (Part 3) – Building Multiple XMLIndex Structures (http://www.liberidu.com/blog/?p=1805)
The posts were based on Index for XML with Repeated Elements maybe that is a bit better to read than on my notepad on the internet (aka blog)
Edited by: Marco Gralike on Oct 28, 2010 7:51 PM -
Complex xml with multiple namespaces giving LPX-00601: Invalid token error
Hi
Apologies if this is a really simple question.
I have not worked with xml before and I'm drowning in different ways to do the extract.
I have a very complex xml, sample below, which I'm trying to do one siple extract to get myself going.
I have the data in a table in an xmltype column,
I am trying to extract containernumber first and get the error.
select xml_column, extract(xml_column,'/env:Envelope/env:Body/ns0:QueryCntrNumberResponse/ns0:QueryResContainerDetail/ns1:ContainerNumber/ns2:ContainerNumber')
from test_xml;
Not sure if I should use the namespaces and have tried without but results are always NULL
I would really appreciate any pointers around these ultiple namespaces.
Thanks
Nicki
XML Sample
<?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"
xmlns:ns0="http://com.cargosmart.cargotracking.webservice.cntr.dto"
xmlns:ns1="http://com.cargosmart.cargotracking.webservice.common.dto"
xmlns:ns2="http://com.cargosmart.cargotracking.webservice.basic.dto"
xmlns:ns3="http://com.cargosmart.cargotracking.webservice.bl.dto"
xmlns:ns4="http://com.cargosmart.cargotracking.webservice.bkg.dto">
<env:Body>
<ns0:QueryByCntrNumberResponse>
<ns0:QueryRes ult="">
<ns0:QueryCriteria>
<ns1:CarrierSCACCode>APLU</ns1:CarrierSCACCode>
<ns1:ContainerNumber>APZU344693-1</ns1:ContainerNumber>
</ns0:QueryCriteria>
<ns0:ContainerDetail>
<ns1:ContainerNumber>
<ns2:ContainerNumber>APZU344693</ns2:ContainerNumber>
<ns2:ContainerCheckDigit>1</ns2:ContainerCheckDigit>
<ns2:GrossWeight>
<ns2:Weight>20260.8</ns2:Weight>
<ns2:WeightUnit>KGS</ns2:WeightUnit>
</ns2:GrossWeight>
</ns1:ContainerNumber>
NOT THE FULL COLUMNCould I just ask you one more question.
I had already expanded the query to include the repeating sections using xmlsequence.
Has that been replaced too?
select extractvalue(xml_column,'/env:Envelope/env:Body/ns0:QueryByCntrNumberResponse/ns0:QueryResult/ns0:ContainerDetail/ns1:ContainerNumber/ns2:ContainerNumber',
'xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns0="http://com.cargosmart.cargotracking.webservice.cntr.dto"
xmlns:ns1="http://com.cargosmart.cargotracking.webservice.common.dto"
xmlns:ns2="http://com.cargosmart.cargotracking.webservice.basic.dto"
xmlns:ns3="http://com.cargosmart.cargotracking.webservice.bl.dto"
xmlns:ns4="http://com.cargosmart.cargotracking.webservice.bkg.dto"') col1,
extractvalue(value(t2),'/ns1:Event/ns1:EventDescription', 'xmlns:ns1="http://com.cargosmart.cargotracking.webservice.common.dto"') Event_Description,
extractvalue(value(t2),'/ns1:Event/ns1:EventDT/ns2:LocDT', 'xmlns:ns1="http://com.cargosmart.cargotracking.webservice.common.dto" xmlns:ns2="http://com.cargosmart.cargotracking.webservice.basic.dto"') Event_DT,
extractvalue(value(t2),'/ns1:Event/ns1:Location/ns2:LocationName', 'xmlns:ns1="http://com.cargosmart.cargotracking.webservice.common.dto" xmlns:ns2="http://com.cargosmart.cargotracking.webservice.basic.dto"') location
from test_xml t1,
table(xmlsequence(extract(t1.xml_column,'/env:Envelope/env:Body/ns0:QueryByCntrNumberResponse/ns0:QueryResult/ns0:ContainerDetail/ns1:Event','xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns0="http://com.cargosmart.cargotracking.webservice.cntr.dto"
xmlns:ns1="http://com.cargosmart.cargotracking.webservice.common.dto"
xmlns:ns2="http://com.cargosmart.cargotracking.webservice.basic.dto"
xmlns:ns3="http://com.cargosmart.cargotracking.webservice.bl.dto"
xmlns:ns4="http://com.cargosmart.cargotracking.webservice.bkg.dto"'))) t2; -
Read XML response with multiple root elements
Hi ,
I am trying to achieve the below scenario but unable to do so.Please help urgently.
I am getting a response from a service which has multiple root elements.these root elements can change at runtime..I need to read the different root elements and extract data from its sub elements.
Regards...
Hoping for an anwser..i assume on runtime the service just returns 1 rootnode, but this rootnode can change
you could use a switch after the invoke
if $response/myroot1
assign $response/myroot to myroot1_var
if $response/myroot2
assign $response/myroot to myroot2_var
etc
so you check what's in the root node before you assign to you temp variable
or if you have logic which is specific based on this root nod you can just implement all these branches in the switch and execute logic in there based on the selected rootnode
several implementations are possible -
HTTPURLConnection response with multiple Set-Cookie Header key
I set up a connection to a server and it gives me a response. This response has two header keys but when I loop through like so many reference and how-to sites tell me I only get one and its the last value.
This is some code that I'm using:
for (int i=1; (headerName = conn.getHeaderFieldKey(i))!=null; i++) {
System.out.println(headerName);
if (headerName.equals("Set-Cookie")) {
cookie += conn.getHeaderField(i); }
}Has anyone attempted this successfully? This code was copy and pasted from an example claimed to work but I used it myself and it doesn't work.
This is the response message:
HTTP/1.1 302 Moved Temporarily
Date: Mon, 16 Feb 2009 03:47:47 GMT
Server: Apache
Set-Cookie: JSESSIONID=E7C54E0ECE8CCFD89EF91FF8A47E34BC; Path=/
Location: http://<SITEURL>/redirecting.jsp
Content-Length: 0
P3P: CP="CAO DSP COR CURa ADMa DEVa OUR IND PHY ONL UNI COM NAV INT DEM PRE PSA"
Keep-Alive: timeout=15, max=15
Connection: Keep-Alive
Content-Type: text/html;charset=ISO-8859-1
Set-Cookie: BIGipServerI2O_pool_A=1815557130.20480.0000; path=/I just read in the Bug database that this is a JDK 1.4 bug, with no workaround proposed. I am using JDK 1.3.
Does anyone out there know about a workaround or what other scheme I could use to do the same thing? (For me it's necessary to set at least the User-Agent and the Cookie headers). -
Issue with extracting node values of an XMLElement with multiple namespaces
I have created a Table with XMLType Column
CREATE TABLE xmlNode
( ID numeric(10) primary key,
DATA XMLType);
Then inserted one row
INSERT INTO xmlNode(ID, DATA) VALUES(1, '<lineItemElement orderLineItemID="12323" transactionType="New" xmlns="http://rcss.bell.ca/schema/lineitemmessages">
<rcss:catalogeID xmlns:rcss="http://rcss.bell.ca/schema/PartnerBatch">3234</rcss:catalogeID>
<rcss:venueID xmlns:rcss="http://rcss.bell.ca/schema/PartnerBatch">345345</rcss:venueID>
<rcss:startDate xmlns:rcss="http://rcss.bell.ca/schema/PartnerBatch">2007-09-10T00:00:00Z</rcss:startDate>
<rcss:endDate xmlns:rcss="http://rcss.bell.ca/schema/PartnerBatch">2007-09-10T00:00:00Z</rcss:endDate>
<rcss:contact contactID="234234" xmlns:rcss="http://rcss.bell.ca/schema/PartnerBatch">
<rcss:address>
<rcss:streetAddress1>?asdsd</rcss:streetAddress1>
<rcss:streetAddress2>?sdss</rcss:streetAddress2>
<rcss:city>?ddf</rcss:city>
<rcss:province>?sdcfsdcf</rcss:province>
<rcss:country>sds</rcss:country>
<rcss:postalCode>1121332</rcss:postalCode>
</rcss:address>
</rcss:contact>
</lineItemElement>')
Then i ran:
SELECT
extractValue(data,'/lineItemElement/rcss:catalogeID','xmlns=http://rcss.bell.ca/schema/lineitemmessages, xmlns:rcss=http://rcss.bell.ca/schema/PartnerBatch')
from xml where id=1
There is nothing returned.
Please advise how could I get the node value when there is namespace?
I know how to extract values if there is one namespace but i'm not able to extract values if there are two namespaces.
Any help is appreciable!!
Thanks in Advance.I fixed that problem too. What I thought was a singleton was actually a repeating element. I needed to be able to "multiply" the repeating node for the main node, but I couldn't find a concise way of doing this in SQL. So instead I did it in with two loops.
FOR rec IN (
SELECT
extractvalue(value(e), 'surchargeEntry/company',p_namespace) company
,extractvalue(value(e), 'surchargeEntry/surchargeType',p_namespace) surcharge_type
,extractvalue(value(e), 'surchargeEntry/shortDescription',p_namespace) short_description
,extractvalue(value(e), 'surchargeEntry/longDescription',p_namespace) long_description
,e.column_value surcharge_entry_xml
FROM TABLE(xmlsequence(extract(p_xml, 'surchargeInquiryResponse' ||
'/surchargeAttributes/surchargeEntry'
,p_namespace))) e
) LOOP
FOR rec_country IN (
SELECT
extractvalue(value(c), 'country/originationCountry',p_namespace) origination_country
,extractvalue(value(c), 'country/destinationCountry',p_namespace) destination_country
FROM TABLE(xmlsequence(extract(rec.surcharge_entry_xml, 'surchargeEntry/country',p_namespace))) c
LOOP
nafta_fee_obj.append_surcharge_entry_data(
v_arr
,r_surcharge_entry(
rec.company
,rec.surcharge_type
,rec.short_description
,rec.long_description
,rec_country.origination_country
,rec_country.destination_country
END LOOP;
END LOOP;
I populate a collection, which is easy to pass around between routines. I can easily convert the collection to a ref cursor, and index-by array, comma-delimited string, etc.
Apparently, the namespace is required in SQL, but not in staright PL/SQL.
I've also noticed that the docs say xmltype() has all these member functions, but when I try to use some of them, I get an error that it's undefined. Like getNumVal(). There are some functions I can use in SQL, or PL/SQL, but not vice-versa.
- Dan Clamage -
XMLTable with multiple namespaces
I have a web service that returns the following XML:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GetGeoLocationIDByWellTagIDResponse xmlns="http://tempuri.org/">
<GetGeoLocationIDByWellTagIDResult xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:int>9110910</a:int>
</GetGeoLocationIDByWellTagIDResult>
</GetGeoLocationIDByWellTagIDResponse>
</s:Body>
</s:Envelope>There is the possibility of more than one Int being returned, so I am trying to use xmltable to pull out this information. But I am having some difficulty pulling out the ID node, because (I am guessing) the node is named "a:int". Here is an example of how I am attempting to get this data:
select x.*
from
(select xmltype.createxml('<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GetGeoLocationIDByWellTagIDResponse xmlns="http://tempuri.org/">
<GetGeoLocationIDByWellTagIDResult xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:int>9110910</a:int>
</GetGeoLocationIDByWellTagIDResult>
</GetGeoLocationIDByWellTagIDResponse>
</s:Body>
</s:Envelope>') xml from dual) t,
xmltable(
xmlnamespaces (
'http://tempuri.org/' as "e",
'http://schemas.microsoft.com/2003/10/Serialization/Arrays' as "a"),
'//e:GetGeoLocationIDByWellTagIDResponse/a:GetGeoLocationIDByWellTagIDResult'
passing t.xml
columns
loc_id int path 'a:int'
) x;This just returns null.
How do I references the "a:int" node in the columns clause to correctly get this record back?SQL> with sample_data as (
2 select xmltype('<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
3 <s:Body>
4 <GetGeoLocationIDByWellTagIDResponse xmlns="http://tempuri.org/">
5 <GetGeoLocationIDByWellTagIDResult xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
6 <a:int>60395867</a:int>
7 <a:int>7948500</a:int>
8 <a:int>2282774</a:int>
9 <a:int>47054172</a:int>
10 <a:int>47434315</a:int>
11 <a:int>52639251</a:int>
12 </GetGeoLocationIDByWellTagIDResult>
13 </GetGeoLocationIDByWellTagIDResponse>
14 </s:Body>
15 </s:Envelope>') xml
16 from dual
17 )
18 select x.loc_id
19 from sample_data t
20 , xmltable(
21 xmlnamespaces (
22 'http://schemas.microsoft.com/2003/10/Serialization/Arrays' as "a"
23 , 'http://schemas.xmlsoap.org/soap/envelope/' as "s"
24 , default 'http://tempuri.org/'
25 )
26 , '/s:Envelope/s:Body/GetGeoLocationIDByWellTagIDResponse/GetGeoLocationIDByWellTagIDResult/a:int'
27 passing t.xml
28 columns
29 loc_id number path '.'
30 ) x
31 ;
LOC_ID
60395867
7948500
2282774
47054172
47434315
52639251
6 rows selected -
Extract on xmltype with multiple namespaces
Given the following xml instance document can you share an example to retrieve the data of the <TransactionNumber> and <IdValue> elements using the XMLType data type. This document is generated by XBD and has 3 different namespaces.
declare
lv_xml xmltype := xmltype(
'<ConfirmAddStudentDeposit xmlns="urn:sungardsct:udc:ws:messages:1.0">
<StudentDepositIdentifier>
<AccountIdentifier xmlns="urn:sungardsct:udc:domain:ar:1.0">
<IdValue xmlns="urn:sungardsct:udc:resources:common:1.0" name="BannerUID">210009102</IdValue>
</AccountIdentifier>
<TransactionNumber xmlns="urn:sungardsct:udc:domain:ar:1.0">8</TransactionNumber>
<ReceiptNumber xmlns="urn:sungardsct:udc:domain:ar:1.0">1606</ReceiptNumber>
</StudentDepositIdentifier>
</ConfirmAddStudentDeposit>');
lv_frag xmltype;
begin
lv_frag := lv_xml.extract('/ConfirmAddStudentDeposit/StudentDepositIdentifier/TransactionNumber', 'xmlns="urn:sungardsct:udc:ws:messages:1.0" xmlns="urn:sungardsct:udc:domain:ar:1.0"');
if lv_frag is null then
dbms_output.put_line('NO good');
else
dbms_output.put_line('maybe working');
end if;
end;You'll need to use prefixs or namespaces
declare
lv_xml xmltype := xmltype(
'<ConfirmAddStudentDeposit xmlns="urn:sungardsct:udc:ws:messages:1.0">
<StudentDepositIdentifier>
<AccountIdentifier xmlns="urn:sungardsct:udc:domain:ar:1.0">
<IdValue xmlns="urn:sungardsct:udc:resources:common:1.0" name="BannerUID">210009102</IdValue>
</AccountIdentifier>
<TransactionNumber xmlns="urn:sungardsct:udc:domain:ar:1.0">8</TransactionNumber>
<ReceiptNumber xmlns="urn:sungardsct:udc:domain:ar:1.0">1606</ReceiptNumber>
</StudentDepositIdentifier>
</ConfirmAddStudentDeposit>');
lv_frag xmltype;
begin
lv_frag := lv_xml.extract('/a:ConfirmAddStudentDeposit/a:StudentDepositIdentifier/c:TransactionNumber', 'xmlns:a="urn:sungardsct:udc:ws:messages:1.0" xmlns:c="urn:sungardsct:udc:domain:ar:1.0"');
if lv_frag is null then
dbms_output.put_line('NO good');
else
dbms_output.put_line('maybe working');
end if;
end; -
View responses with multiple users
When i publishes a document, others can't see the responses.
We use the same acrobat.com account. In their tracker they can't
see the responses of my published file, although they use the same
Acrobat.com account. We use Acrobat Pro 9 and Tracker to manage our
PDF files.We set up a response document as a team. This document is
distributed to acrobat.com and is an open access document which is
linked to on a website. Customers fill in the document en responses
should be visible to the team. Only the team member whom ditributed
the document is seeing the responses.
Other team members cannot see the responses in their Acrobat
tracker software (al on different Pc's), although we use the same
Acrobat.com account settings. Is it possible to see the responses
for all the team members on different computers? -
XML doc with multiple namespaces
Hi,
a little stupid question...
Is it possible to get a xml file that assigns two different namespaces and I don't want to use a prefix?
example:
xml doc uses namespace xmlns:a="someuri" and xmlns:b="otheruri"
<?xml version="1.0" encoding="UTF-8"?>
<Root xmlns="someuri" xmlns:b="otheruri">
<test/>
<b:rest/>
</Root>
Some way to get prefix b out of it?
Thanxokay, it was a stupid question...
solution:
<?xml version="1.0" encoding="UTF-8"?>
<Root xmlns="someuri" xmlns:b="otheruri">
<test/>
<rest xmlns="otheruri"/>
</Root> -
I have an XML file
<?xml version="1.0"?>
-<Document xmlns="http://www.taleo.com/ws/integration/toolkit/2011/05">
+<Attributes>
-<Content>
-<ExportXML xmlns="http://www.taleo.com/ws/integration/toolkit/2005/07/action/export">
-<record>
<field name="ContestNumber">12000000RT</field>
<field name="JobInformation,JobType,Description">Experienced</field>
</record>
</ExportXML>
</Content>
</Document>
I am using the following file to retrieve the data
SELECT *
FROM XMLTable(XMLNAMESPACES('http://www.taleo.com/ws/integration/toolkit/2011/05' as "n1",
'http://www.taleo.com/ws/integration/toolkit/2005/07/action/export' as "n2"), '//n1:Document/Content/n2:ExportXML/record'
passing xmltype(
bfilename('TEST','TALEOOUT-12-26.xml')
, nls_charset_id('AL32UTF8')
columns
ContestName varchar2(1000) path 'field[1]'
)What am i doing wrongThis was the code that worked.Thanks A_Non .
SELECT *
FROM XMLTable(XMLNAMESPACES('http://www.taleo.com/ws/integration/toolkit/2011/05' as "n1",
'http://www.taleo.com/ws/integration/toolkit/2005/07/action/export' as "n2"),
'/n1:Document/n1:Content/n2:ExportXML/n2:record'
passing xmltype(
bfilename('TEST','TALEOOUT-12-26.xml')
, nls_charset_id('AL32UTF8')
columns
ContestNumber VARCHAR2 (4000) path 'n2:field[1]',
Job_Info_JobTypDesc VARCHAR2 (4000) path 'n2:field[2]',
JobFamily VARCHAR2 (4000) path 'n2:field[3]',.........
)Edited by: Rameshkumar T on Nov 30, 2012 10:59 AM -
Parsing across multiple namespaces... best practice?
Howdy all, here's my situation:
I am attempting to create a simple interface to a particular type of webdav server which has some unusual XML data coming back, and need some advice on the best way to parse this XML.
I have a generic "query" object which consists of a set of "Fields", a "Scope" and a set of "Constraints". This query is ultimately formed as an XML request sent to the WebDAV server. The response is also a generic "ResultSet" response, which consists of "Rows". Each Row consists of "Fields" (the same type as in the query). A Field is basically a key/value pair (all Strings), and a namespace which describes the location of the field within the WebDAV server. (obviously modelled on a JDBC-style interaction)
I need to build a generic parser which can create a ResultSet from a raw XML document.
For Example:
Given a "query" with the following fields:
FIELD 1
namespace: urn:schemas:httpmail
name:fromemail
FIELD 2
namespace: DAV
name: id
The query will basically say (pseudo SQL)
"select "urn:schemas:httpmail:fromemail", "DAV:id" from <scope> where <constraints>"
This will return an XML document something like this:
<a:multistatus
xmlns:a="DAV:"
xmlns:b="urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/"
xmlns:c="xml:"
xmlns:d="urn:schemas:httpmail:"
xmlns:e="urn:schemas:mailheader:">
<a:response>
<a:href>
http://blah.blah.com/someurl
</a:href>
<a:propstat>
<a:status>
HTTP/1.1 200 OK
</a:status>
<a:prop>
<d:fromemail>
[email protected]
</d:fromemail>
<a:id>
AQsAAAAARgAgCwAAAABGeAIAAAAA
</a:id>
</a:prop>
</a:propstat>
</a:response>
<a:response>
</a:response>
</a:multistatus>
So.. I then need to create a ResultSet object, which looks like this:
ResultSet<Object>
|---Rows<Collection>
|---Row<Object>
|---Field<Object>
|---name: fromemail
|---namespace: urn:schemas:httpmail
|---value: [email protected]
|---Field<Object>
|---name: id
|---namespace: DAV
|---value: AQsAAAAARgAgCwAAAABGeAIAAAAA
|---Row<Object>
....As you can see, I need BOTH the value, and the original data relating to the namespace and field name in the java object returned.
Problems I am having:
1. Parsing multiple namespaces. The path to multistatus/response/prop/fromemail (for example) spans two namespaces, hence can't use Commons Digester
2. Including XML element names as values in the returned object. I need/want to be able to store the XML element name (eg "fromemail") as a value in the java object returned.
I'm looking for thoughts as to the best way to deal with this... XPath?, DOM/SAX? etc
Any help you can provide.
CheersHowdy all, here's my situation:
I am attempting to create a simple interface to a particular type of webdav server which has some unusual XML data coming back, and need some advice on the best way to parse this XML.
I have a generic "query" object which consists of a set of "Fields", a "Scope" and a set of "Constraints". This query is ultimately formed as an XML request sent to the WebDAV server. The response is also a generic "ResultSet" response, which consists of "Rows". Each Row consists of "Fields" (the same type as in the query). A Field is basically a key/value pair (all Strings), and a namespace which describes the location of the field within the WebDAV server. (obviously modelled on a JDBC-style interaction)
I need to build a generic parser which can create a ResultSet from a raw XML document.
For Example:
Given a "query" with the following fields:
FIELD 1
namespace: urn:schemas:httpmail
name:fromemail
FIELD 2
namespace: DAV
name: id
The query will basically say (pseudo SQL)
"select "urn:schemas:httpmail:fromemail", "DAV:id" from <scope> where <constraints>"
This will return an XML document something like this:
<a:multistatus
xmlns:a="DAV:"
xmlns:b="urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/"
xmlns:c="xml:"
xmlns:d="urn:schemas:httpmail:"
xmlns:e="urn:schemas:mailheader:">
<a:response>
<a:href>
http://blah.blah.com/someurl
</a:href>
<a:propstat>
<a:status>
HTTP/1.1 200 OK
</a:status>
<a:prop>
<d:fromemail>
[email protected]
</d:fromemail>
<a:id>
AQsAAAAARgAgCwAAAABGeAIAAAAA
</a:id>
</a:prop>
</a:propstat>
</a:response>
<a:response>
</a:response>
</a:multistatus>
So.. I then need to create a ResultSet object, which looks like this:
ResultSet<Object>
|---Rows<Collection>
|---Row<Object>
|---Field<Object>
|---name: fromemail
|---namespace: urn:schemas:httpmail
|---value: [email protected]
|---Field<Object>
|---name: id
|---namespace: DAV
|---value: AQsAAAAARgAgCwAAAABGeAIAAAAA
|---Row<Object>
....As you can see, I need BOTH the value, and the original data relating to the namespace and field name in the java object returned.
Problems I am having:
1. Parsing multiple namespaces. The path to multistatus/response/prop/fromemail (for example) spans two namespaces, hence can't use Commons Digester
2. Including XML element names as values in the returned object. I need/want to be able to store the XML element name (eg "fromemail") as a value in the java object returned.
I'm looking for thoughts as to the best way to deal with this... XPath?, DOM/SAX? etc
Any help you can provide.
Cheers
Maybe you are looking for
-
What monitors are compatible with MacBook Pro 13"?
Apart from Apple Cinema, what monitors are compatible with my new MacBook Pro 13"? I need something less expensive than an Apple Cinema monitor, but large enough to reduce my neck/eye strain. I understand that it has something to do with Thunderbolt.
-
What additional plug ins needed for video
http://veehd.com/video/3724046_Derren-Brown-Investigates-1 says I need additional plug in to play.But no plug in shown when clicked. I already downloaded DivX Plus Web Player I then get a message that a manual install is available but that brings me
-
Dear All, I am implementing ECM for BOM, but having problem during authorizations to set status to users. As we have implemented there scenarios for ECM. 1. Creator 2. Reviewer 3. Approver Now I want to set authorization as given below t
-
If I change my site do I "publish to folder"?
Hello All, Now that I have my site up and running. If I make a change to it do I have to "publish to folder" again and then upload by FTP? Or can I make the change and my FTP program automatically finds the change when it uploads? Thanks, Mike
-
[solved]USB wont boot on some computers.
Hi all. I have installed arch on a usb from a running arch system after doing pacman -S arch-install-scripts. It boots on my Acer Aspire One which picks it up as a USB-HDD however when I tried to boot it on a different computer it didn't work and fal