SimpleXML in Array speichern
Benjamin
- php
Hallo,
ich lese eine XML-Datei in ein SimpleXML-Objekt ein. Die benötigten Informationen, die durchweg Attribute von Tags sind, lese ich dann aus diesem Objekt aus. Diese Informationen werden dann in einem mehrdimensionalen Array abgelegt.
Dieses Array hat dann beispielsweise folgende Struktur:
Array
(
[0] => Array
(
[0] => Array
(
[Name] => PS_DokumentSammlungenID
[DataType] => SimpleXMLElement Object
(
[0] => Number
)
[FieldType] => SimpleXMLElement Object
(
[0] => Normal
)
)
[1] => Array
(
[DataType] => SimpleXMLElement Object
(
[0] => Number
)
[Name] => FS_ArchiveID
[FieldType] => SimpleXMLElement Object
(
[0] => Normal
)
)
[...]
)
[1] => Array
(
[0] => Array
(
[Name] => PS_ArchiveID
[DataType] => SimpleXMLElement Object
(
[0] => Number
)
[FieldType] => SimpleXMLElement Object
(
[0] => Normal
)
)
[1] => Array
(
[Name] => Name
[DataType] => SimpleXMLElement Object
(
[0] => Text
)
[FieldType] => SimpleXMLElement Object
(
[0] => Normal
)
)
[....]
Dieses Array muß ich zur Verarbeitung durch mehrere HTML-Formulare "ziehen".
Nun entsteht allerdings folgendes Problem:
Ich kann offenbar aufgrund der "eingebetteten" SimpleXML-Objekte dieses Array weder in einer Session ($_SESSION(..)) noch in einer Datei (serialize) speichern.
(=> Fehlermeldung: "Node no longer exists...")
An anderer Stelle in diesem Forum habe ich zu einem sehr ähnlichen Problem folgende Aussage gefunden:
"[...] obendrein spielt auch noch SimpleXML mit. Das verhält sich aufgrund der von ihm verwendeten Magie sowieso etwas unberechenbarer als üblich. Prüf doch mal zu Fuß, ob die Objekte gleich sind. Brauchst du an der Stelle überhaupt noch die SimpleXMLElement-Objekte? Wenn nicht, solltest du den Inhalt daraus befreien und allein mit ihm weiterarbeiten."
Genau diesen Ansatz wollte ich nun nutzen. Jedoch stellt sich für mich die Frage, wie ich das SimpleXML-Objekt auflöse...
Dieser Ansatz aus dem anderen Thread hat mir nicht geholfen:
"Der Dokumentation von SimpleXML entnehme ich, dass das mit einem Typecast des Objekts auf String gehen soll. Siehe Example 2210 auf der Seite http://de.php.net/manual/en/ref.simplexml.php"
Das Beispiel 2210, das sich in der Doku über die Suchfunktion finden läßt, erklärt meiner Meinung nach, wie ich aus einem String ein SimpleXML-Objekt mache, jedoch habe ich den umgekehrten Fall zu lösen.
Ich bedanke mich vorab ganz herzlich für Hinweise, Tips und Lösungsansätze.
Viele Grüße
Benjamin
Hellihello Benjamin,
eine Google-Suche mit simplexml und seialize bringt auf Platz 2:
http://www.phpforum.de/archiv_62006_simplexml@in@Session@Variable@speichern_anzeigen.html
Darin:
"It is not possible to serialize PHP built-in objects."
Frage ist vielleicht auch, wieso denn deine Frage: mit
$_SESSION["xmlstring"]=$sxmobj->asXML()
kannst Du doch das als XML-String ausgeben und dann mit $sxmobj=simplexml_load_string($_SESSION["xmlstring"])
wieder einlesen.
Gruß,
frankx
Ich grüsse den Cosmos,
Hallo,
ich lese eine XML-Datei in ein SimpleXML-Objekt ein. Die benötigten Informationen, die durchweg Attribute von Tags sind, lese ich dann aus diesem Objekt aus. Diese Informationen werden dann in einem mehrdimensionalen Array abgelegt.
Mal ne saudimme Frage, wieso benutzt du dafür nicht die Funktion, die extra dafür zur Verfügung steht?
Möge das "Self" mit euch sein