Mac De PL/SQL RSS Reader #18 Tweet
以下は、各FEEDのルート要素を示したものだが、違いがお分かりだろうか?
<rss version="0.92">
<rss version="0.91">
<rss version="2.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:cc="http://web.resource.org/cc/"
xmlns="http://purl.org/rss/1.0/">
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"
xmlns="http://purl.org/rss/1.0/">
<feed version="0.3"
xmlns="http://purl.org/atom/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<feed xmlns="http://www.w3.org/2005/Atom">
もう、気付きましたよね?! そう!。 違いは、Namespaceが宣言されている点なのである。
しかも、同じ RDFでも微妙に異なる場合もある。ということで、ORA-30625というエラーの原因は、Namespaceを指定すれば解決できそうである。
残りのORA-31011については、解析に失敗していことから、おそらく、文字化けが影響しているものと想像できる。(以前にも似たようなことがあったが文字化けを回避することで解決した。)
それらを踏まえてテスト用のコードを修正(前回のコードに比べると可成りコード量が増えます)し再度、確認してみると、
RSS 2.0ーー(前回はこんなエラーであった。)
GLASSCATFISH> l
1 declare
2 v_req UTL_HTTP.REQ;
3 v_resp UTL_HTTP.RESP;
4 v_source VARCHAR2(1024);
5 v_tempSourceClob CLOB;
6 v_myParser DBMS_XMLPARSER.Parser;
7 v_rssDoc DBMS_XMLDOM.DomDocument;
8 v_uri httpUriType;
9 v_xml xmlType;
10 c_namespace CONSTANT VARCHAR2(500) :=
11 'xmlns:dc="http://purl.org/dc/elements/1.1/" '
12 ||'xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" '
13 ||'xmlns:admin="http://webns.net/mvcb/" '
14 ||'xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"';
15 begin
16 v_req := UTL_HTTP.BEGIN_REQUEST('http://miwa2006.exblog.jp/index.xml');
17 UTL_HTTP.SET_HEADER(v_req, 'User-Agent', 'Oracle UTL_HTTP/Oracle10g R1;');
18 UTL_HTTP.SET_HEADER(v_req, 'Content-Type', 'text/xml;charset=UTF-8');
19 v_resp := UTL_HTTP.GET_RESPONSE(v_req);
20 DBMS_LOB.CREATETEMPORARY(v_tempSourceClob, FALSE);
21 BEGIN
22 LOOP
23 UTL_HTTP.READ_LINE(v_resp, v_source, true);
24 v_source := v_source || UTL_TCP.CRLF;
25 DBMS_LOB.WRITEAPPEND(v_tempSourceClob, LENGTH(v_source), v_source);
26 END LOOP;
27 EXCEPTION
28 WHEN UTL_HTTP.END_OF_BODY THEN
29 UTL_HTTP.END_RESPONSE(v_resp);
30 END;
31 v_myParser := DBMS_XMLPARSER.NEWPARSER();
32 DBMS_XMLPARSER.PARSECLOB(v_myParser, v_tempSourceClob);
33 v_rssDoc := DBMS_XMLPARSER.GETDOCUMENT(v_myParser);
34 v_xml := DBMS_XMLDOM.GETXMLTYPE(v_rssDoc);
35 dbms_output.put_line(
36 XmlType.extract(
37 v_xml, '/rss/channel/title/text()', c_namespace
38 ).getStringVal()
39 );
40 dbms_output.put_line(
41 XmlType.extract(
42 v_xml, '/rss/channel/link/text()', c_namespace
43 ).getStringVal()
44 );
45* end;
GLASSCATFISH> /
Life is a trip of looking for myself !
http://miwa2006.exblog.jp
PL/SQLプロシージャが正常に完了しました。
RDFーー(前回はこのようなエラーであった。)
GLASSCATFISH> l
1 declare
2 v_req UTL_HTTP.REQ;
3 v_resp UTL_HTTP.RESP;
4 v_source VARCHAR2(1024);
5 v_tempSourceClob CLOB;
6 v_myParser DBMS_XMLPARSER.Parser;
7 v_rssDoc DBMS_XMLDOM.DomDocument;
8 v_uri httpUriType;
9 v_xml xmlType;
10 c_namespace CONSTANT VARCHAR2(500) :=
11 'xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" '
12 ||'xmlns:dc="http://purl.org/dc/elements/1.1/" '
13 ||'xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" '
14 ||'xmlns:admin="http://webns.net/mvcb/" '
15 ||'xmlns:content="http://purl.org/rss/1.0/modules/content/" '
16 ||'xmlns:cc="http://web.resource.org/cc/" '
17 ||'xmlns="http://purl.org/rss/1.0/"';
18 begin
19 v_req := UTL_HTTP.BEGIN_REQUEST(
20 'https://discus-hamburg.cocolog-nifty.com/mac_de_oracle/index.rdf'
21 );
22 UTL_HTTP.SET_HEADER(v_req, 'User-Agent', 'Oracle UTL_HTTP/Oracle10g R1;');
23 UTL_HTTP.SET_HEADER(v_req, 'Content-Type', 'text/xml;charset=UTF-8');
24 v_resp := UTL_HTTP.GET_RESPONSE(v_req);
25 DBMS_LOB.CREATETEMPORARY(v_tempSourceClob, FALSE);
26 BEGIN
27 LOOP
28 UTL_HTTP.READ_LINE(v_resp, v_source, true);
29 v_source := v_source || UTL_TCP.CRLF;
30 DBMS_LOB.WRITEAPPEND(v_tempSourceClob, LENGTH(v_source), v_source);
31 END LOOP;
32 EXCEPTION
33 WHEN UTL_HTTP.END_OF_BODY THEN
34 UTL_HTTP.END_RESPONSE(v_resp);
35 END;
36 v_myParser := DBMS_XMLPARSER.NEWPARSER();
37 DBMS_XMLPARSER.PARSECLOB(v_myParser, v_tempSourceClob);
38 v_rssDoc := DBMS_XMLPARSER.GETDOCUMENT(v_myParser);
39 v_xml := DBMS_XMLDOM.GETXMLTYPE(v_rssDoc);
40 dbms_output.put_line(
41 XmlType.extract(
42 v_xml, '/rdf:RDF/channel/title/text()', c_namespace
43 ).getStringVal()
44 );
45 dbms_output.put_line(
46 XmlType.extract(
47 v_xml, '/rdf:RDF/channel/link/text()', c_namespace
48 ).getStringVal()
49 );
50* end;
GLASSCATFISH> /
Mac De Oracle
https://discus-hamburg.cocolog-nifty.com/mac_de_oracle/
PL/SQLプロシージャが正常に完了しました。
GLASSCATFISH> l
1 declare
2 v_req UTL_HTTP.REQ;
3 v_resp UTL_HTTP.RESP;
4 v_source VARCHAR2(1024);
5 v_tempSourceClob CLOB;
6 v_myParser DBMS_XMLPARSER.Parser;
7 v_rssDoc DBMS_XMLDOM.DomDocument;
8 v_uri httpUriType;
9 v_xml xmlType;
10 c_namespace CONSTANT VARCHAR2(500) :=
11 'xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" '
12 ||'xmlns:dc="http://purl.org/dc/elements/1.1/" '
13 ||'xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" '
14 ||'xmlns:admin="http://webns.net/mvcb/" '
15 ||'xmlns="http://purl.org/rss/1.0/"';
16 begin
17 v_req := UTL_HTTP.BEGIN_REQUEST(
18 'http://megawatt.blogdns.net/blog/rdf10_xml'
19 );
20 UTL_HTTP.SET_HEADER(v_req, 'User-Agent', 'Oracle UTL_HTTP/Oracle10g R1;');
21 UTL_HTTP.SET_HEADER(v_req, 'Content-Type', 'text/xml;charset=UTF-8');
22 v_resp := UTL_HTTP.GET_RESPONSE(v_req);
23 DBMS_LOB.CREATETEMPORARY(v_tempSourceClob, FALSE);
24 BEGIN
25 LOOP
26 UTL_HTTP.READ_LINE(v_resp, v_source, true);
27 v_source := v_source || UTL_TCP.CRLF;
28 DBMS_LOB.WRITEAPPEND(v_tempSourceClob, LENGTH(v_source), v_source);
29 END LOOP;
30 EXCEPTION
31 WHEN UTL_HTTP.END_OF_BODY THEN
32 UTL_HTTP.END_RESPONSE(v_resp);
33 END;
34 v_myParser := DBMS_XMLPARSER.NEWPARSER();
35 DBMS_XMLPARSER.PARSECLOB(v_myParser, v_tempSourceClob);
36 v_rssDoc := DBMS_XMLPARSER.GETDOCUMENT(v_myParser);
37 v_xml := DBMS_XMLDOM.GETXMLTYPE(v_rssDoc);
38 dbms_output.put_line(
39 XmlType.extract(
40 v_xml, '/rdf:RDF/channel/title/text()', c_namespace
41 ).getStringVal()
42 );
43 dbms_output.put_line(
44 XmlType.extract(
45 v_xml, '/rdf:RDF/channel/link/text()', c_namespace
46 ).getStringVal()
47 );
48* end;
GLASSCATFISH> /
メガ放談
http://megawatt.blogdns.net/blog
PL/SQLプロシージャが正常に完了しました。
最後にATOMーー(前回はこのようなエラーであった)
GLASSCATFISH> l
1 declare
2 v_req UTL_HTTP.REQ;
3 v_resp UTL_HTTP.RESP;
4 v_source VARCHAR2(1024);
5 v_tempSourceClob CLOB;
6 v_myParser DBMS_XMLPARSER.Parser;
7 v_rssDoc DBMS_XMLDOM.DomDocument;
8 v_uri httpUriType;
9 v_xml xmlType;
10 c_namespace CONSTANT VARCHAR2(500) :=
11 'xmlns="http://purl.org/atom/ns#" '
12 ||'xmlns:dc="http://purl.org/dc/elements/1.1/"';
13 begin
14 v_req := UTL_HTTP.BEGIN_REQUEST(
15 'http://atsu-log.way-nifty.com/today_s_menu/atom.xml'
16 );
17 UTL_HTTP.SET_HEADER(v_req, 'User-Agent', 'Oracle UTL_HTTP/Oracle10g R1;');
18 UTL_HTTP.SET_HEADER(v_req, 'Content-Type', 'text/xml;charset=UTF-8');
19 v_resp := UTL_HTTP.GET_RESPONSE(v_req);
20 DBMS_LOB.CREATETEMPORARY(v_tempSourceClob, FALSE);
21 BEGIN
22 LOOP
23 UTL_HTTP.READ_LINE(v_resp, v_source, true);
24 v_source := v_source || UTL_TCP.CRLF;
25 DBMS_LOB.WRITEAPPEND(v_tempSourceClob, LENGTH(v_source), v_source);
26 END LOOP;
27 EXCEPTION
28 WHEN UTL_HTTP.END_OF_BODY THEN
29 UTL_HTTP.END_RESPONSE(v_resp);
30 END;
31 v_myParser := DBMS_XMLPARSER.NEWPARSER();
32 DBMS_XMLPARSER.PARSECLOB(v_myParser, v_tempSourceClob);
33 v_rssDoc := DBMS_XMLPARSER.GETDOCUMENT(v_myParser);
34 v_xml := DBMS_XMLDOM.GETXMLTYPE(v_rssDoc);
35 dbms_output.put_line(
36 XmlType.extract(
37 v_xml, '/feed/title/text()', c_namespace
38 ).getStringVal()
39 );
40 dbms_output.put_line(
41 XmlType.extract(
42 v_xml, '/feed/link[@type="text/html"]/@href', c_namespace
43 ).getStringVal()
44 );
45* end;
GLASSCATFISH> /
今日のゴハン
http://atsu-log.way-nifty.com/today_s_menu/
PL/SQLプロシージャが正常に完了しました。
GLASSCATFISH>
GLASSCATFISH> l
1 declare
2 v_req UTL_HTTP.REQ;
3 v_resp UTL_HTTP.RESP;
4 v_source VARCHAR2(1024);
5 v_tempSourceClob CLOB;
6 v_myParser DBMS_XMLPARSER.Parser;
7 v_rssDoc DBMS_XMLDOM.DomDocument;
8 v_uri httpUriType;
9 v_xml xmlType;
10 c_namespace CONSTANT VARCHAR2(500) :=
11 'xmlns="http://www.w3.org/2005/Atom"';
12 begin
13 v_req := UTL_HTTP.BEGIN_REQUEST(
14 'http://www.kaminoge-design.tamabi.ac.jp/faculty/takami/atom.xml'
15 );
16 UTL_HTTP.SET_HEADER(v_req, 'User-Agent', 'Oracle UTL_HTTP/Oracle10g R1;');
17 UTL_HTTP.SET_HEADER(v_req, 'Content-Type', 'text/xml;charset=UTF-8');
18 v_resp := UTL_HTTP.GET_RESPONSE(v_req);
19 DBMS_LOB.CREATETEMPORARY(v_tempSourceClob, FALSE);
20 BEGIN
21 LOOP
22 UTL_HTTP.READ_LINE(v_resp, v_source, true);
23 v_source := v_source || UTL_TCP.CRLF;
24 DBMS_LOB.WRITEAPPEND(v_tempSourceClob, LENGTH(v_source), v_source);
25 END LOOP;
26 EXCEPTION
27 WHEN UTL_HTTP.END_OF_BODY THEN
28 UTL_HTTP.END_RESPONSE(v_resp);
29 END;
30 v_myParser := DBMS_XMLPARSER.NEWPARSER();
31 DBMS_XMLPARSER.PARSECLOB(v_myParser, v_tempSourceClob);
32 v_rssDoc := DBMS_XMLPARSER.GETDOCUMENT(v_myParser);
33 v_xml := DBMS_XMLDOM.GETXMLTYPE(v_rssDoc);
34 dbms_output.put_line(
35 XmlType.extract(
36 v_xml, '/feed/title/text()', c_namespace
37 ).getStringVal()
38 );
39 dbms_output.put_line(
40 XmlType.extract(
41 v_xml, '/feed/link[@type="text/html"]/@href', c_namespace
42 ).getStringVal()
43 );
44* end;
GLASSCATFISH> /
Radical Imagination -from 鎌倉 with Love
http://www.kaminoge-design.tamabi.ac.jp/faculty/takami/
PL/SQLプロシージャが正常に完了しました。
GLASSCATFISH>
ということで、全て解決!!。
ほんとうに曲数が少ないのは iTMSの抱える課題だ。ということで、今回もAmazonへ
聞いている曲:Candy Dulfer - ベスト・オブ・キャンディ・ダルファー
| 固定リンク | 0
コメント