22. Januar 2007

RSS-Feeds mit SQL auslesen ... der letzte Teil ...

Nun geht es (nach einer Pause, zugegebenermaßen) weiter mit dem Auslesen eines RSS-Feeds per SQL. Im letzten Post habt Ihr schon gesehen, wie man ein einzelnes XML-Element extrahieren kann. Um nun die einzelnen Downloads zu extrahieren, müssen wir etwas weitergehen - schließlich enthält das XML-Dokument nicht nur einen Download, sondern mehrere ...
SELECT
 EXTRACTVALUE(value(item), '/item/title') as "TITEL"
,EXTRACTVALUE(value(item), '/item/link') as "LINK"
FROM
TABLE(
 XMLSEQUENCE(
   EXTRACT(
     HTTPURITYPE(
       'http://www.oracle.com/technology/syndication/rss_otn_soft.xml'
     ).getXML()
    ,'/rss/channel/item'
   )
 )
) item

TITEL                          LINK
------------------------------ ------------------------------
Oracle Database Vault 10g Rele http://www.oracle.com/technolo
ase 2 (10.2.0.3.0)  for Window gy/software/products/database_
s (32-bit)                     vault/index.html?rssid=rss_otn
                            _soft

Oracle 10g Instant Client (10. http://www.oracle.com/technolo
2.0.3) for Linux x86           gy/software/tech/oci/instantcl
                            ient/htdocs/linuxsoft.html?rss
                            id=rss_otn_soft

Das SQL ist (wie Ihr seht) zwar etwas länger, erfüllt aber seinen Zweck. Das TABLE(XMLSEQUENCE(EXTRACT()))-Konstrukt nimmt die 1:n-Beziehung im XML-Dokument quasi auseinander und stellt sie als virtuelle Tabelle zur Verfügung. Über value(item) kann man dann im SELECT-Teil darauf zugreifen ... Was macht man nun damit? Ihr könnt die Inhalte überall dort verwenden, wo auf Basis einer SQL-Abfrage eine Tabelle / ein Bericht generiert werden kann
  • Application Express (HTML DB)-Berichte
  • Excel
  • .NET
  • Java
und so weiter und so fort ... das XML muss nicht mehr per Code auseinandergenommen werden, vielmehr macht die Datenbank die ganze Arbeit ...

1 Kommentar:

Patrick Wolf hat gesagt…

Hallo Carsten,

uebrigens nochmal danke! Dein XML Beispiel hat mir super geholfen wie ich den Artikel zu Yahoo Pipes Integration in APEX fürs OTN geschrieben habe.

Danke
Patrick

Beliebte Postings