在Oracle數據庫中,我讀從RESTful Web服務,看起來像這樣一些XML:問題帶上拉遠程XML數據到Oracle數據庫
<ns1:parent xmlns:ns1="http://www.example.com/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xs1:schemaLocation= "http://www.example.com/xml http://www.w3.org/2001/XMLSchema-instance">
<ns1:child>
<ns1:options></ns1:options>
<ns1:variables></ns1:variables>
<ns1:values>
<ns1:value qualifiers="X" date="someTime">Value1</ns1:value>
<ns1:value qualifiers="X" date="someOtherTime">Value2</ns1:value>
...
<ns1:value qualifiers="X" date="some100thTime">Value100</ns1:value>
</ns1:values>
</ns1:child>
我再試圖藉此數據並使用下面的代碼將其提取到數據庫中。但是,當我這樣做時,它將創建一個只有SYSDATE字段的記錄,而其他兩個值爲空。我也用XMLTable嘗試過,但結果相同。我在想這個命名空間有問題,但是我找不到合適的語法,並且我嘗試過的所有其他組合都根本不返回任何行。
我們還從另一個幾乎相同的數據源(不使用名稱空間)提取數據,並且此代碼工作正常(當然,沒有所有的名稱空間)。我是否在某處獲得命名空間的語法錯誤?
DECLARE
myXMLType XMLType := xmltype(We use a function to pull in the XML file here);
BEGIN
/*Outputting the XMLType here shows that data is in it*/
INSERT INTO output_table
SELECT
ExtractValue(VALUE(p), '/values/ns1:value',
'xmlns:ns1="http://www.example.com/xml"') AS myValue,
ExtractValue(VALUE(p), '//values/ns1:value/@ns1:date',
'xmlns:ns1="http://www.example.com/xml"') AS myTime,
SYSDATE AS read_date
FROM
TABLE(XMLSequence(EXTRACT(myXMLType, '/ns1:parent/ns1:child/ns1:values',
'xmlns:ns1="http://www.example.com/xml"')))p;
COMMIT;
END;
請編輯XML示例以顯示完整的有效示例。 – OldProgrammer
我不確定還需要添加什麼,這幾乎是整個文件,除了ns1:child下列出的兩個其他標記之外。無論如何我都加了他們。 –