Schonwieder Probleme mit SimpleXMLElement, diesmal addChild()
Richard
- php
Hallo,
Die addChild()-Methode des SimpleXMLElement-Objekts sollte laut Manual ab PHP 5.1.3 zur Verfügung stehen, ich habe PHP 5.1.6. Versuche ich Daten in meinen XML-String zu schreiben, passiert allerdings nichts. Ich meine wirklich _nichts_. Normalerweise müsste doch wenigstens eine Fehlermeldung kommen, von wegen "Call to undefined Function" oder so einen Kram, aber es passiert einfach gar nichts. Oder sehe ich den Wald vor Bäumen nicht?:
$book = $books_xml->addChild( "book" );
$author = $book->addChild( "name", $name );
$books_xml ist das SimpleXMLElement-Objekt mit dem XML-String. Das funktioniert auf jeden Fall, denn Daten auslesen kann ich problemlos.
Beste Grüße
Richard
echo $begrüßung;
Versuche ich Daten in meinen XML-String zu schreiben, passiert allerdings nichts. Ich meine wirklich _nichts_.
Wie stellst du fest, dass nichts, "ich meine wirklich _nichts_" :-), passiert?
$a = 42; <-- Hier passiert augenscheinlich erstmal auch nichts.
echo $a; <-- Gibt 42 aus. Da war offensichtlich doch was passiert.
$x = new SimpleXMLElement('<foo/>');
$x->addChild('bar');
print_r($x);
ergibt bei mir
SimpleXMLElement Object (
[bar] => SimpleXMLElement Object ( )
)
So kann ich dein Nichts-Passieren nicht nachvollziehen.
Normalerweise müsste doch wenigstens eine Fehlermeldung kommen, von wegen "Call to undefined Function" oder so einen Kram [...]
Seit es __call() gibt ist das bei Objekten nicht mehr zwingend der Fall.
echo "$verabschiedung $name";
Hallo dedlfix,
Erstmal Danke für deine Antwort.
$x = new SimpleXMLElement('<foo/>');
$x->addChild('bar');
print_r($x);
>
> ergibt bei mir
>
> SimpleXMLElement Object (
> [bar] => SimpleXMLElement Object ( )
> )
Ja, OK. Aber warum steht dann nichts, und diesmal meine ich wirklich \_nichts\_ ;) im XML-String?
Beste Grüße
Richard
echo $begrüßung;
$x = new SimpleXMLElement('<foo/>');
$x->addChild('bar');
print_r($x);
> >
> > ergibt bei mir
> >
> > SimpleXMLElement Object (
> > [bar] => SimpleXMLElement Object ( )
> > )
>
> Ja, OK. Aber warum steht dann nichts, und diesmal meine ich wirklich \_nichts\_ ;) im XML-String?
Was für ein XML-String? Ich habe keine funktionierende Glaskugel. Du müsstest die Dinge schon so beschreiben, dass ich sie auch ohne eine solche nachvollziehen kann. Ich rate mal, dass du
echo $x->asXML();
meinst. Das erzeugt in der Tat keine augenscheinliche Ausgabe. Aber
echo htmlspecialchars($x->asXML());
ergibt
<?xml version="1.0"?>
<xml><bla/></xml>
(In der Quellcode-Ansicht des Browsers hätte man es auch so gesehen.)
echo "$verabschiedung $name";
Hallo dedlfix,
Was für ein XML-String? Ich habe keine funktionierende Glaskugel. Du müsstest die Dinge schon so beschreiben, dass ich sie auch ohne eine solche nachvollziehen kann. Ich rate mal, dass du
echo $x->asXML();
meinst. Das erzeugt in der Tat keine augenscheinliche Ausgabe. Aber
echo htmlspecialchars($x->asXML());
ergibt
<?xml version="1.0"?>
<xml><bla/></xml>
Ich sehe schon, ich habe mir das ganz einfach falsch vorgestellt. Ich habe eine XML-Datei, aus der Daten ausgelesen werden und in die jetzt auch Daten geschrieben werden sollten. Ich dachte, sie stehen dann schon direkt in der Datei. Aber ich muss wohl explizit den modifizierten XML-String per asXML() in die Datei zurückschreiben, oder verstehe ich immernoch etwas falsch?
Beste Grüße
Richard
Hallo Richard,
Ich sehe schon, ich habe mir das ganz einfach falsch vorgestellt. Ich habe eine XML-Datei, aus der Daten ausgelesen werden und in die jetzt auch Daten geschrieben werden sollten. Ich dachte, sie stehen dann schon direkt in der Datei. Aber ich muss wohl explizit den modifizierten XML-String per asXML() in die Datei zurückschreiben?
Antwort: ja. (Fürs Archiv, falls es mal jemand braucht)
Beste Grüße
Richard