PHP XML Daten in einer Session speichern

Beim Versuch, SimpleXML Objekte in eine Session zu speichern solltet ihr folgendes Wissen.

Ein trivialer Ansatz wie

if (!isset($_SESSION['xml'])) {
  $xml = simplexml_load_string($myxmlstring);
  $_SESSION['xml'] = $xml->someNode;
}
var_dump($_SESSION['xml']);

wird fehlschlagen. Im ersten Moment sind die Daten in der Session offenbar gespeichert, beim nächsten Aufruf der Seite werden allerdings alle values verschwunden sein, d.h. der xml-Key der $_SESSION ist zwar vorhanden (weshalb auch das Neuladen übersprungen wird), aber $_SESSION[‚xml‘] = null.

Ihr umgeht das Problem, in dem ihr jeden Wert, den ihr speichern wollt, vorher explizit Typkastet und dann erst in die Session einbringt:

if (!isset($_SESSION['xml'])) {
  $xml = simplexml_load_string($myxmlstring);
  $_SESSION['xml'] = array(
    'someNode' => (int)$xml->someNode,
    'otherNode' => (string)$xml->other->node[0]->attribName,
}
var_dump($_SESSION['xml']);

Nun erhaltet ihr die Werte bei jedem Aufruf und könnt die eingelesenen Werte in der Session transportieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.