Sidebar
ein-/ausblenden

SimpleXML mit PHP 4

Plugin für WordPress SEO

Anzeige

Das Einlesen von XML-Dokumenten ist mit PHP 5 eine wahre Freude und die Programmierung macht Spaß. Leider ist dieser Komfort unter PHP 4 nicht gegeben.
Sicher ist der Trend zu PHP 5, aber leider interessiert das nicht alle Hoster und Anwender und daher muss man doch des öfteren unter PHP 4 arbeiten.

Natürlich gibt es eine ganze Reihe von Tools, die einem die Arbeit erleichtern und die Verarbeitung von XML ermöglichen. Aber auch da gibt es große Unterschiede und nicht immer ist das Ergebnis befriedigend.
WordPress beispielsweise nutzt MagpieRSS und nicht immer ist die Ausgabe wie erwünscht. Alternative SimplePie ist da schon flexibler. Aber auch dann muss mehr programmiert werden. Mit SimpleXML unter PHP 5 ist es einfach und flexibel.

Die SimpleXML-Extension bietet ein besonders einfaches und leicht zu handhabendes Toolset, um XML in ein Objekt zu konvertieren, das mit normalen Eigenschafts-Selektoren und Array-Iteratoren bearbeitet werden kann.
php.net: SimpleXML

Nun gibt es die Klasse „SimpleXML for PHP 4“, die eingebunden, steht SimpleXML auch unter PHP 4 bereit und erleichtert die Arbeit. Schöne Umsetzung mit einer 2 kByte großen Klasse. Damit wird die Alternative, wenn kein PHP 5 vorliegt, angenehm.

Die Nutzung ist denkbar einfach.


<?php
require_once 'simplexml.class.php';

$file = 'http://bueltge.de/feed';
$sxml = new simplexml;
$data = $sxml->xml_load_file($file);

print_r($data);
?>

17 Kommentare zu „SimpleXML mit PHP 4“

  1. 1
    Kommentar von Patrick

    Wow, danke fuer den Tipp. Auf sowas hab' ich schon lange gewartet.

  2. 2
    Kommentar von Taha Paksu

    Thanks so much. I have updated the class file in phpclasses.org so users can now access the array elements like this:

    $result->var1->child[3]->content;

    but if the user wants to access the element like array style, a little setting must be applied now;

    $sx = xml_load_file($url,"array");

    this returns the result as an array.

    And please, if someone finds an error in this class, don't hesitate to ask me or write it to the discussion forum in my class page.

    Thank you.

  3. 3
    Kommentar von Frank Bültge

    @Taha Paksu: Welcome. I think, this is a very nice class.

  4. 4
    Kommentar von Taha Paksu

    Thank you.

  5. 5
    Kommentar von daniel

    Danke für den Tipp, ist sehr hilfreich.

  6. 6
    Kommentar von ALi

    hi!
    I see that you have made a good job!
    but there is some problem when i have a doc.xml in this form:

    when i try to pars doc.xml --> ko
    when i try to pars doc2.xml --> ko
    in fact in the while() when the size of is 1 it make a problem and can't see the first item and when i add a secon item to the the size will be> 1 --> it show me the first and the second!!!

    Can u help me?
    thank you in advance

    Best regards
    Ali DHIBI

  7. 7
    Kommentar von Frank Bültge

    @ALi: please send me your code via mail, the comment has delete a little bid of your code.

  8. 8
    Kommentar von Ali

    Hi!
    finally i found the solution!
    in fact i have to make a test with the size of the returned object
    sizeof($data);
    if $data==1 i dont use a while
    else i use a while.
    thank u very much for your help
    best regards

  9. 9
    Kommentar von Jan

    Dank deines Hinweises konnte ich simplexml jetzt auch unter php4 zum laufen bringen. Allerdings hab ich das Problem das der Feed mit umlauten wie ä ö etc reinkommt. Und simplexml meldet mir deshalb einen Fehler :-( Nehme ich mir den Feed und entferne aus dem Quelltext alle Umlaute, speichere den Quelltext lokal als Datei ab und lasse diesen dann von simplexml einlesen - alles wunderbar. Vielleicht jemand einen Tip was ich wo einstellen müsste damit diese Umlaute automatisch umgewandelt werden bevor der Feed eingelesen wird ?

  10. 10
    Kommentar von Frank Bültge

    @Jan: du musst eine Funktion integrieren, die dir die Zeichen ersetzt. Alternativ kann man versuchen, den Feed umzuleiten, z.B. Yahoo Pipes, und diesen "neuen" Feed zu laden.

  11. 11
    Kommentar von MANUEL SCHILLING

    danke schön

  12. 12
    Kommentar von Taha Paksu

    Hey,

    I needed to say something about the charset problem. The function xml_load_file has an argument to specify the charset the xml system should read from the source xml. you can parse the xml in any charset if you set this option. And the other problems are related to the php code you wrote outside the script. and maybe the file type "unicode" or "utf8"

    Thank you all for using my script. See you.

  13. 13
    Kommentar von Petre

    Kann mir einer den Code schicken, leider sind nur Teile hier verfügbar. Oder noch besser wo kann ich den Code herunterladen, leider bis jetzt nichts gefunden. Danke im Voraus.

  14. 14
    Kommentar von Tim

    Hallo, das ist genau das was ich suche. Leider konnte ich die Klasse bisher nicht runterladen. Die Registrierung scheint nicht zu funktionieren.

    Gibt es Alternativen zum Download?

  15. 15
    Kommentar von Frank Bültge

    @Tim: habe sie dir via Mail gesandt.

  16. 16
    Kommentar von Gege

    Hi,
    wie kann ich mit Hilfe der Klasse denn sowas wie asXML machen?
    Ich hab das Problem das ich sowas habe:

    HEADline
    TextText
    18.01.2010
    123456


    Nun möchte ich die Message komplett ausgeben und komm einfach nicht drauf wie das funktioniert.

  17. 17
    Kommentar von Frank Bültge

    @Gege: nein, soweit mir bekannt ist die Methode nicht in der Klasse

Kommentar schreiben

Kommentarregeln: Bleib cool, kritisch ist in Ordnung, aber wenn du unhöflich bist, dann lösche ich deinen Kommentar. Bitte benutze deinen persönlichen Namen oder Initialen und nicht den Namen eines Unternehmens, dies würde als Spam gewertet und wird gelöscht. Der Zusammenhang zwischen Namen und URL sollte nicht offensichtlich auf Spam hindeuten! ♥ Ansonsten, vielen Dank für den Kommentar und viel Spaß mit meinem Blog.

Kommentar-Hilfe

händischer Spam:
Beachte die Kommentarregeln, jede Form von versuchtem Spam wird gelöscht. Warum und wieso steht in einem meiner Beiträge.

Bezug auf Textstellen:
Du kannst direkt bezug auf Textstellen im Beitrag nehmen. Dazu muss lediglich der Bereich im Artikel markiert werden; daraufhin erscheint ein Button, der den markierten Text in das Kommentarfeld übernimmt und als Zitat auszeichnet. Die Funktion ist nur bei aktivem JavaScript nutzbar.

xHTML:
Du kannst folgende Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <pre> <em> <strong> <strike> <ul> <ul> <li>

Achte darauf, wenn du Code im Kommentar hinterlegen willst, dann muss der Code maskiert sein. Dann wird er nicht interpretiert. Der Code muss mit Hilfe von HTML-Entities dargestellt werden, d.h. dass man z.B. < als &lt; und > als &gt; einfügt.

E-Mail-Benachrichtigung bei neuen Kommentaren ?
Wenn der Haken in der Checkbox gesetzt ist, dann wirst du über neue Kommentare vie E-Mail informiert. Der Versand erfolgt nur, wenn du die URL in der Bestätigungs-E-Mail genutzt hast oder schon Abonnent hier im Blog bist.

Kommentar erscheint nicht:
Alle Kommentare werden manuell geprüft, freigegeben und nach Möglichkeit beantwortet. Bitte um etwas Geduld und Nachsicht.

Identifikationsbilder (Avatare):
Auf Gravatar.com kann man sich mit seiner E-Mail-Adresse registrieren und ein Bild hochladen, dann erscheint dieses Gravatar hier und in vielen weiteren Blogs.

Spamschutz:
Das Kommentarformular ist mit einem Spamschutz ausgerüstet. Solltest du diesen Artikel ohne JavaScript besuchen und kommentieren wollen, so muss du die Frage beantworten und das jeweilige Wort in das Textfeld eingeben.