0
我的第一個問題,請原諒的錯誤....獲取的XMLElement從Oracle XMLTABLE與命名空間
我有這樣的XML,從銀行加拿大,平均每日匯率
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
xmlns:cb="http://www.cbwiki.net/wiki/index.php/Specification_1.1"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel rdf:about="http://www.bankofcanada.ca/valet/fx_rss/FXUSDCAD">
<title>Daily exchange rates</title>
<link>http://www.bankofcanada.ca/?p=39898</link>
<description>Daily average exchange rates - published once each business day by 16:30 ET. All Bank of Canada exchange rates are indicative rates only.</description>
<items>
<rdf:Seq>
<rdf:li rdf:resource="http://www.bankofcanada.ca/valet/fx_rss/FXUSDCAD" />
</rdf:Seq>
</items>
<dc:language>en</dc:language>
</channel>
<item rdf:about="http://www.bankofcanada.ca/valet/fx_rss/FXUSDCAD">
<title>CA: 1.3475 CAD = 1 USD 2017-03-08</title>
<link>http://www.bankofcanada.ca/?p=39898</link>
<description>1 USD = 1.3475 CAD (US dollar to Canadian dollar daily exchange rate)</description>
<dc:date>2017-03-08T21:30:00Z</dc:date>
<dc:language>en</dc:language>
<cb:statistics>
<cb:country>CA</cb:country>
<cb:exchangeRate>
<cb:value decimals="4">1.3475</cb:value>
<cb:baseCurrency>CAD</cb:baseCurrency>
<cb:targetCurrency>USD</cb:targetCurrency>
<cb:rateType>Bank of Canada exchange rate</cb:rateType>
<cb:observationPeriod frequency="daily">2017-03-08T21:30:00Z</cb:observationPeriod>
</cb:exchangeRate>
</cb:statistics>
</item>
</rdf:RDF>
而且我有這個Oracle PL/Sql獲取一些值,它返回一行,但它不返回任何數據。所有列都是空白或空的,我錯過了一些東西,但我不確定是什麼?我在Oracle 11g數據庫中運行它。
with xml_data AS
(select xmltype(
'<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
xmlns:cb="http://www.cbwiki.net/wiki/index.php/Specification_1.1"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel rdf:about="http://www.bankofcanada.ca/valet/fx_rss/FXUSDCAD">
<title>Daily exchange rates</title>
<link>http://www.bankofcanada.ca/?p=39898</link>
<description>Daily average exchange rates - published once each business day by 16:30 ET. All Bank of Canada exchange rates are indicative rates only.</description>
<items>
<rdf:Seq>
<rdf:li rdf:resource="http://www.bankofcanada.ca/valet/fx_rss/FXUSDCAD" />
</rdf:Seq>
</items>
<dc:language>en</dc:language>
</channel>
<item rdf:about="http://www.bankofcanada.ca/valet/fx_rss/FXUSDCAD">
<title>CA: 1.3475 CAD = 1 USD 2017-03-08</title>
<link>http://www.bankofcanada.ca/?p=39898</link>
<description>1 USD = 1.3475 CAD (US dollar to Canadian dollar daily exchange rate)</description>
<dc:date>2017-03-08T21:30:00Z</dc:date>
<dc:language>en</dc:language>
<cb:statistics>
<cb:country>CA</cb:country>
<cb:exchangeRate>
<cb:value decimals="4">1.3475</cb:value>
<cb:baseCurrency>CAD</cb:baseCurrency>
<cb:targetCurrency>USD</cb:targetCurrency>
<cb:rateType>Bank of Canada exchange rate</cb:rateType>
<cb:observationPeriod frequency="daily">2017-03-08T21:30:00Z</cb:observationPeriod>
</cb:exchangeRate>
</cb:statistics>
</item>
</rdf:RDF>'
) xmlcol from dual
)
SELECT length(x1.xmlcol) as x_len, x2.title
from xml_data x1,
XMLTABLE (
XMLNAMESPACES (
'http://www.w3.org/1999/02/22-rdf-syntax-ns#' AS "rdf",
'http://www.cbwiki.net/wiki/index.php/Specification_1.1' AS "cb",
'http://purl.org/dc/elements/1.1/' AS "dc"),
'/rdf:RDF'
PASSING x1.XMLCOL
COLUMNS
title VARCHAR2 (1024) PATH '/channel/title'
) x2