0
我正在嘗試從plsql調用webservice。我有以下代碼(工作):使用plsql調用rss feed
CREATE OR REPLACE PROCEDURE WEBSERVICE AS
v_xml XMLTYPE;
BEGIN
v_xml := XMLTYPE(UTL_HTTP.REQUEST(URL => 'http://dev.markitondemand.com/Api/Quote?symbol=AAPL'));
FOR x IN (SELECT
EXTRACTVALUE(VALUE(p), '/Data/Status/text()') AS title
FROM TABLE(XMLSEQUENCE(EXTRACT(v_xml, '/QuoteApiModel/Data'))) p)
LOOP
DBMS_OUTPUT.PUT_LINE(x.title);
END LOOP;
COMMIT;
END;
但是這個代碼不工作:
CREATE OR REPLACE PROCEDURE WEBSERVICE AS
v_xml XMLTYPE;
BEGIN
v_xml := XMLTYPE(UTL_HTTP.REQUEST(URL => 'http://xkcd.com/rss.xml'));
FOR x IN (SELECT
EXTRACTVALUE(VALUE(p), 'item/title/text()') AS title
FROM TABLE(XMLSEQUENCE(EXTRACT(v_xml, '/rss/channel/item'))) p)
LOOP
DBMS_OUTPUT.PUT_LINE(x.title);
END LOOP;
COMMIT;
END;
它給了我下面的錯誤:
Connecting to the database oracle.
ORA-31011: XML parsing failed
ORA-19202: Error occurred in XML processing
LPX-00007: unexpected end-of-file encountered
ORA-06512: at "SYS.XMLTYPE", line 310
ORA-06512: at "SYS.WEBSERVICE", line 4
ORA-06512: at line 2
Process exited.
Disconnecting from the database oracle.
我注意到不同的是xkcd rss feed有一個xml頭,另一個沒有。我應該怎麼做才能做到這一點?