Archiv verlassen und diese Seite im Standarddesign anzeigen : wo ist der Fehler beim speichern der XML ?
speeedy018 19-05-2008, 16:27 Hallo,
habe nochmal ein Problem mit XML
52. $doc = new DOMDocument('1.0');
53. $node = new DOMNode;
54. $doc ->formatOutput = true;
55.
56. $root = $doc -> create_Element('travelobject');
57. $doc = $node -> append_child ($root);
58. //Travelcode
59. $travelcode = $doc -> create_Element('travelcode');
60. $root = $node -> append_child($travelcode);
61. $codetext = $doc -> create_Text_Node($result['reise_id']);
62. $travelcode = $node -> append_child($codetext);
ich bekomme dann folgende Fehlermeldung !
Fatal error: Call to a member function on a non-object in /homepages/.../XML.php on line 59
Das ganze soll mit PHP Version 4.4.8 laufen, auf meinem lokalen Server (5.2.3) läuft das ganze wenn ich die "_" rausnehme also anstatt create_element, createelement schreibe.
Hat jemand eine Ahnung woran das liegt das oben beschriebene Problem, das mit dem "_" dient nur zur Info?
gruß
speeedy018
Also wenn $doc in Zeile 56 noch ein Element ist, fällt mir jetzt kein Grund ein, warum es dass in Zeile 59 nicht mehr sein sollte.
Error_Reporting ist drin?
Mach mal testausgaben und guck doch einfach mal, was $doc ist.
onemorenerd 22-05-2008, 00:58 Original geschrieben von TobiaZ
Also wenn $doc in Zeile 56 noch ein Element ist, fällt mir jetzt kein Grund ein, warum es dass in Zeile 59 nicht mehr sein sollte.
Mir fällt schon einer ein und der steht in Zeile 57: $doc = irgendwas. ;)
Haha, wie geil!
wo ist der Smilie mit dem :hammer: ? :D
speeedy018 23-05-2008, 12:31 Hallo Leute,
ich habe da wieder ein Problem, beim speichern bekomme ich lediglich ein
"Object"
in die xml datei geschrieben.
mein datei sieht wie folgt aus:
$doc = new DOMDocument('1.0');
$node = new DOMNode;
$doc ->formatOutput = true;
$root = $doc -> create_Element('travelobject');
//Travelcode
$travelcode = $doc -> create_Element('travelcode');
$root = $node -> append_child($travelcode);
$codetext = $doc -> create_Text_Node($result['reise_id']);
$travelcode = $node -> append_child($codetext);
//Traveltitle
$traveltitle = $doc -> create_Element('traveltitle');
$root = $node -> append_child($traveltitle);
$titletext = $doc -> create_text_node($result['reisetitel']);
$traveltitle = $node -> append_child($titletext);
//Travelduration
$travelduration = $doc -> create_Element('travelduration');
$root = $node -> append_child($travelduration);
$durationtext = $doc -> create_text_node($result['dauer_tage']);
$travelduration = $node -> append_child($durationtext);
.
.
.
$handle = fopen('test123.xml', 'w');
fwrite($handle, $doc);
fclose($handle);
echo '| Reise wurde als XML abgelegt';
bei echo $doc kommt auch nur "object".
aber wie kann ich dann die generierte XML- Datei speichern ?
$doc -> save("test123.xml") funktioniert nicht, da ich einen PHP 4 Server habe
Danke für die Antworten im Vorraus
Speeedy018
speeedy018 23-05-2008, 12:33 Danke
für die Hilfe, es lag natürlich daran !
gruß
speeedy018
Quetschi 23-05-2008, 13:21 Kenn mich bei PHP4-Dom leider ned so aus, aber schau dir mal das an:
http://www.php.net/manual/de/function.domdocument-dump-file.php
$doc ist nun mal ein Objekt, das kannst du weder mit echo einfach ausgeben, noch mal eben so als String in eine Datei speichern.
Also wenn es eine entsprechende Methode dafür unter PHP4 gibt, solltest du die im Manual finden (evtl. ist Quetschis Link ja schon die Lösung).
Falls DOMDocument die keine Methode zur Verfügung stellt, dann musst du sie selbst implementieren. (kann ich mir aber eigentlich nicht vorstellen)
(Aber auch meine PHP4-Zeiten sind etwas her...)
speeedy018 05-06-2008, 17:53 XML ist einfach nicht mein Thema,
ich hänge schon wieder !
$doc = new DOMDocument('1.0');
gibt folgende Zeile aus:
<?xml version="1.0"?>
wie bekomme ich das hier hin ?
<?xml version="1.0" encoding="ISO-8859-1" ?>
Mit
test = $doc -> dump_mem(true,'ISO-8859-1')
und
echo '<pre>'.htmlentities($test).'<pre>';
wird es richtig ausgegeben.
In die datei speichere ich es so:
$doc->dump_file('temp/test.xml');
wie bekomme ich bei dump_file das encoding rein ?
Danke im Vorraus
speeedy018
Quetschi 05-06-2008, 18:03 Ne - nicht wirklich dein Thema...
new DOMDocument('1.0', 'ISO-8859-1');
speeedy018 05-06-2008, 19:52 DOMDocument funktioniert aber unter PHP 4 nicht!
Deswegen musste ich auf domxml_new_document umsteigen !
gruß
speeedy018
Quetschi 06-06-2008, 10:31 argh - nicht aufgepasst.
Nimm halt dann
$xmlStr = $doc->dump_mem(true,'ISO-8859-1');
und $xmlStr speicherst halt dann über die file-Funktionen von PHP. Scheint ned anders zu gehen - zumindest steht nicht mal in meinem Buch was drüber.
|
-
- |