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 ...

8. Januar 2007

Neues Jahr ... weiter geht's ...

Erstmal allen ein frohes neues Jahr 2007! zuletzt hatten wir mit HTTPURITYPE einen externen Web-Inhalt eingebunden. Nun werden wir das mal praktisch anwenden - Wir möchten die Inhalte des RSS-Feeds ... http://www.oracle.com/technology/syndication/rss_otn_soft.xml mit SQL auslesen und tabellarisch darstellen. Wir beginnen wie gehabt ...
SELECT
  HTTPURITYPE(
   'http://www.oracle.com/technology/syndication/rss_otn_soft.xml'
 ).getXML()
FROM DUAL;
Da RSS-Feeds als XML bereitgestellt werden, können die Inhalte mit Datenbankfunktionen ausgelesen werden:
SELECT
  EXTRACTVALUE(
    HTTPURITYPE(
      'http://www.oracle.com/technology/syndication/rss_otn_soft.xml'
    ).getXML(),
    '/rss/channel/title/text()'
  ) as TITEL
FROM DUAL;

TITEL
----------------------------------------------------
Oracle New Downloads
Wie man die einzelnen Elemente (Items) des RSS-Feeds ausliest und als Tabelle anzeigt, kommt dann beim nächsten Mal ...

Beliebte Postings