PHP SimpleXml Entity Parser-Fehler

Asterix-Ac

Erfahrenes Mitglied
Hi Community,

ich suche schon sehr lange in Goooooogle. Alle Seiten zeigen den gleichen Fehler, doch keiner schreibt die Lösung hin :(
Also : Immer, wenn ich
PHP:
$elem = new SimpleXMLElement($xml);
einsetze, tritt folgende Warnung auf :
PHP:
Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: Entity: line 4: parser error : Start tag expected, '<' not found in /pfad/zu/test.php on line 24
Vielleicht kann mir jemand mal erklären, warum der Parser-Fehler auftritt, denn die XML-Datei ist 100% XML-kompatibel :
Code:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<persons>
    <person>
        <item vorname="Jupp" />
        <item name="Juppijupp" />
        <item strasse="Juppstr.5" />
        <item plz="12345" />
        <item ort="Jupphausen" />
        <item land="Deutschland" />
        <item tel="01234/56789" />
        <item alter="99" />
        <item sprachkenntnisse="Deutsch,Englisch" />
        <item eigenschaften="Tänzer,Strahlemann,Rennfahrer" />
    </person>
</persons>

Danke für Eure Hilfe,

Asterix
 
Zeig doch mal deinen PHP-Code, vllt. kann man dann helfen.

EDIT: Jedenfalls funktioniert es so bei mir tadellos (auch mit deinem XML):

PHP:
<?php
$xml = file_get_contents('xmltest2.xml');
$sxml = new SimpleXMLElement($xml);

var_dump($sxml);

EDIT2: Jetzt habe ich auch verstanden, was dein Problem ist: Du kannst nicht an den SimpleXMLElement-Konstruktor den Pfad zu einem XML-Dokument angeben, denn der Prototyp sieht so aus:

Code:
public __construct ( string $data [, int $options = 0 [, bool $data_is_url = false [, string $ns = "" [, bool $is_prefix = false ]]]] );

Das bedeutet, du darfst nur eine Zeichenketten übergeben, die den Inhalt des XML-Dokument einthält. :-) Schön, dass dein Problem damit gelöst ist.
 
Zuletzt bearbeitet:
Hallo Saftmeister,

Danke für Deine Antwort.
PHP:
$xml = file_get_contents($path);
Das war die Lösung. Warum ich darauf nicht schon eher gekommen bin :rolleyes:

Asterix
 
Zurück