1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Simple XML RSS Aggregator

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Datschi, 16.06.06.

  1. Datschi

    Datschi Reinette de Champagne

    Dabei seit:
    08.11.04
    Beiträge:
    417
    Hi Ihr. Da muss ich euch schon wieder mit XML und PHP nerven. Ich hoffe, ihr könnt mir das verzeihen. Wie ihr euch sicher erinnert, hab ich vor nen paar Tagen schon einmal was zu dem Thema gefragt. Hat sich inzwischen erledigt.:-D

    Ich habe im Praktikum die Aufgabe, mehrere RSS Feeds zu Parsen und sie in eine Datenbank zu schreiben. Das jedoch, sind Probleme, die noch weit weg liegen.
    Zunächst mal soll das Ganze eigentlich so aussehen, dass ich in meinem php-Skript mehrere Feed-Adressen angebe, die dann in einer foreach()-Schleife nacheinander durchgearbeitet werden. Das ist etwas, das ich noch hinkriegen müsste. Dann allerdings sollen die einzelnen Feeds (also XML-Dateien) durch eine Switch-Case-Anweisung, die überprüfen soll, um welche RSS-Version es sich handelt, da ja wenigstens 3 davon auf jeden Fall unterschiedlich behandelt werden müssen (RSS1.0, RSS 2.0 und ATOM).
    Wie also kann ich die Version auslesen und sie dem jeweiligen Case zuordnen, damit dann die dazugehörige Funktion aufgerufen wird?

    Ich hoffe, das war jetzt einigermaßen verständlich.:innocent:
    Wär schön, wenn mir jemand helfen könnte!:)

    Der Datschi
     
  2. Datschi

    Datschi Reinette de Champagne

    Dabei seit:
    08.11.04
    Beiträge:
    417
    Ich bin leider immer noch nicht weiter gekommen.
    Ich weiß nur, mit welcher Funktion das funktionieren könnte.
    Und zwar mit simplexml_attributes(). Nur scheine ich zu blöd zu sein!

    Hier mal ein Stück Code:
    Code:
    <?php
    
    $feeds = simplexml_load_file("Beispielfeed");
    
    foreach ($feeds as $file) {
    	 $file = $file;
    
    	$doc = simplexml_load_file($file);
        $version = $doc->rss->attributes() as $version;
        print $version;
    }
    ?>
    Wie schon im ersten Post beschrieben, versuche ich die RSS Version des geladenen Feeds zu identifizieren. Nur leider weiß ich nich, wie. Vielleicht denk ich auch ganz und gar falsch und ihr habt ne viel simplere Lösung!

    Danke schonmal!
    Der Datschi
     
  3. Datschi

    Datschi Reinette de Champagne

    Dabei seit:
    08.11.04
    Beiträge:
    417
    OK. So einfach is das scheinbar doch nich. Was ich bisher herausgefunden habe, ist, dass die simple_xml_loadfile() den ersten und den letzten Tag wegschneidet. Ausgerechnet den, in dem die RSS-Version spezifiziert ist. Ist natürlich äußerst unpraktisch! Wenn mir doch was einfällt, dann sag ich bescheid. Vielleicht interessiert das irgendwann ja doch mal irgendwen :p

    Bis denn denn!

    Der Datschi
     
  4. MrNase

    MrNase Champagner Reinette

    Dabei seit:
    11.01.05
    Beiträge:
    2.643
    Ein guter alter Freund hat mir mal folgende Funktion zugespielt:
    Code:
    function parseXML($code) // Johannes Klose
    {
            $elems = array();
    
            if(preg_match_all('/<([A-Za-z0-9]+)(?:(?: [A-Za-z0-9]+=".*?")*)?>(.*?)<\/\1>/se', $code, $matches)) {
                    for($i = 0; $i < count($matches[1]); $i++)
                    {
                            $elems[$matches[1][$i]] = parseXML($matches[2][$i]);
                    }
            } else {
                    return $code;
            }
    
            return $elems;
    }
    
    In meinem Fall, ich verwende es zum parsen der Wetterinformationen auf www.mrnase.de, wird sie wie folgt verwendet:

    Code:
    $file = file_get_contents('XML-DATEI');
    $weatherFile = parseXML($file);
    $head = $weatherFile['weather']['head'];
    
    $head enthält dann genau das was ich brauche.

    Vielleicht hilft dir das ja!

    Und falls nicht dann probier den anderen XML-Parser aus. Es gibt bestimmt einen der über eine Funktion verfügt die dir den Typ des Feeds herausfiltert! :)
     
  5. Datschi

    Datschi Reinette de Champagne

    Dabei seit:
    08.11.04
    Beiträge:
    417
    Dank dir. Ich werd sehen, ob ich damit was anfangen kann! Zum Versionscheck hab ich inzwischen aber schon eine Lösung mit der DOM-Extension gefunden, die eigentlich relativ gut funktioniert!
    Wenn ich die Lösung habe, werd ich sie hier natürlich gerne zur Verfügung stellen.

    Bis denn denn!

    Der Datschi
     

Diese Seite empfehlen