Seite 1 von 1

XML mit PHP zerlegen?

Verfasst: 01.07.2005 09:34
von heini
Hallo,

vielleicht kann mir hier jemand weiterhelfen.
Ich möchte einen RSS-Feed, der als XML kommt, zerlegen.
Das Einlesen klappt, aber die einzelnen Datensätze in die Felder
zerlegen, das klappt nicht.
Als Beispiel habe ich mir aus dem Portal-Mod den Heise-Newsticker
vorgenommen, aber irgendwie...

Hat jemand ein Beispiel, mit welchen PHP-Befehlen man die XML-Struktur
in die Felder zerlegen kann?

Ciao

Martin :cry:

Verfasst: 01.07.2005 13:04
von heini
Alles klar, habs schon selbst rausgekriegt. War ein bischen fummelig,
aber jetzt läufts prima.

Ciao

Martin :grin:

Verfasst: 01.07.2005 13:58
von saerdnaer
und wie hast du's gemacht?

ah

Verfasst: 01.07.2005 14:10
von heini
Stimmt, sollen ja alle was von haben...

Als Basis habe ich die portal_heise_ticker.php aus dem Portal-Mod
genommen. XML-Dateien sind ja alle nach dem gleichen Schema aufgebaut. Du brauchst das Tag <item>, das ist jeweils ein Datensatz.

Dann alle End-Tags löschen:

Code: Alles auswählen

$fcontents = str_replace ("</title>", "", $fcontents);
..etc...

Dann alle Feld-Tags vereinheitlichen (außer <item>):

Code: Alles auswählen

$fcontents = str_replace ("<title>", "<tag>", $fcontents);
...etc...

Ein Array anlegen mit allen Datensätzen:

Code: Alles auswählen

$splices = explode ("<item>", $fcontents); 
Die einzelnen Felder in der Schleife separieren:

Code: Alles auswählen

for ($i = 1; $i < count($splices; $i++){ 
$satz = explode ("<tag>", $splices[$i]); 
// Titel
$title = strip_tags($satz[1]);
...etc...

Und dann ausgeben:

Code: Alles auswählen

// Ausgabe
$headline = "<b>" . "<a href=\"" . trim ($link) . "\"" . " target=\"_blank\"" . ">" . $title . "</b>" ; 
$headline = $headline . "</a>";
print $headline . "<br>" . "<br>"; 
} 
Natürlich muß man entsprechend der Datenstruktur alle Felder einzeln
ansprechen. Bestimmt geht das irgendwie auch dynamisch, aber ist
mir nicht eingefallen.

Auf diese Weise sind alle Felder des Datensatzes einzeln auflös- und
ansprechbar.

Ciao

Martin :grin:

Edit: das nächste mal bitte BBCodes verwenden MfG Saerdnaer

Verfasst: 04.07.2005 17:32
von heini
So nun habe ich noch einen anderen RSS-Feed eingebunden, mit
der gleichen Technik. Komischerweise bekomme ich nun ein Zeichen-
satzproblem:

Code: Alles auswählen

Zeitung schlägt Bob Geldof für Friedensnobelpreis vor
Weiß jemand, wie ich das lösen kann? Im Kopf wird das Tag
<language>de</language> mitgegeben.

Ciao

Martin :o

Verfasst: 05.07.2005 10:06
von heini
Habs schon selbst gefunden.

Die Funktion

Code: Alles auswählen

utf8_decode()
hats gerichtet.

Ciao

Martin :D