• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Simple XML RSS Aggregator

Datschi

Reinette de Champagne
Registriert
08.11.04
Beiträge
415
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
 

Datschi

Reinette de Champagne
Registriert
08.11.04
Beiträge
415
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
 

Datschi

Reinette de Champagne
Registriert
08.11.04
Beiträge
415
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
 

MrNase

Champagner Reinette
Registriert
11.01.05
Beiträge
2.656
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! :)
 

Datschi

Reinette de Champagne
Registriert
08.11.04
Beiträge
415
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