问题
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<ShipmentTrackingResponse xmlns="http://ws.aramex.net/ShippingAPI/v1/">
<Transaction xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Reference1>001</Reference1>
<Reference2 i:nil="true"/>
<Reference3 i:nil="true"/>
<Reference4 i:nil="true"/>
<Reference5 i:nil="true"/>
</Transaction>
<Notifications xmlns:i="http://www.w3.org/2001/XMLSchema-instance"/>
<HasErrors>false</HasErrors>
<TrackingResults xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"/>
<NonExistingWaybills xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:string>XXXXXXXXXX</a:string>
</NonExistingWaybills>
</ShipmentTrackingResponse>
</s:Body>
I have used the following queries to extract values, but how do i extract the NonExistingWaybills
?
SELECT EXTRACTVALUE(l_resp_xml,
'//ShipmentTrackingResponse/Transaction/Reference1',
'xmlns="http://ws.aramex.net/ShippingAPI/v1/"')
INTO l_response_result
FROM dual;
DBMS_OUTPUT.put_line ( 'Result> Reference1=' || l_response_result);
SELECT EXTRACTVALUE(l_resp_xml,
'//ShipmentTrackingResponse/TrackingResults',
'xmlns="http://ws.aramex.net/ShippingAPI/v1/"')
INTO l_response_result
FROM dual;
DBMS_OUTPUT.put_line ( 'Result> TrackingResults=' || l_response_result);
SELECT EXTRACTVALUE(l_resp_xml,
'//ShipmentTrackingResponse/NonExistingWaybills',
'xmlns="http://ws.aramex.net/ShippingAPI/v1/"')
INTO l_response_result
FROM dual;
DBMS_OUTPUT.put_line ( 'Result> NonExistingWaybills=' || l_response_result);
The last query gives no result...
回答1:
It returned results...
SELECT EXTRACTVALUE(l_resp_xml
, '//ShipmentTrackingResponse/NonExistingWaybills/node()'
, 'xmlns="http://ws.aramex.net/ShippingAPI/v1/"')
INTO l_response_result
FROM dual;
DBMS_OUTPUT.put_line ( 'Result> NonExistingWaybills=' || l_response_result);
回答2:
This will return the same result, but without select. I guess this is what you were looking for:
l_response_result := l_resp_xml.extract(
'//ShipmentTrackingResponse/NonExistingWaybills/node()'
).getstringval();
来源:https://stackoverflow.com/questions/17923211/extracting-values-from-xml-in-oracle-pl-sql