【问题标题】:how to store xml obj in php session variable如何将xml obj存储在php会话变量中
【发布时间】:2026-02-14 01:30:02
【问题描述】:

首先(压制喷火者) 此链接没有回答我的问题 - 至少没有帮助 Storing XML object in PHP Session Variables

以下内容更有帮助,因为与上面不同的是,它给出了一个示例

Uncaught exception 'Exception' with message 'Serialization of 'SimpleXMLElement' is not allowed'

我试过了,没用。

$obj = simplexml_load_string(path/to/xml/file)
$_SESSION[somevar] = $obj

在其他地方使用它会产生异常错误,导致我访问上述链接。 更多研究表明您不能将 xml 存储在 php session var 中,如果这是真的,有没有办法在页面之间使用它。我从我的 xml 文件中提取的记录很小,所以 sql 将是一个过度杀戮。但是对于好奇的人,

  • 我想要
  • 扩展我的 xml 知识
  • 并了解动态。
  • 项目很小

脚本只提取一个包含十几个字段的游戏记录,然后使用该信息显示在页面上。页面是动态访问的,因此各个页面对数据执行不同的操作。

我的一个想法是:创建一个函数来在需要时调用记录并从那里操作它是否值得?

ps 如果这是一个没有实际意义的问题或烦人的问题,请不要回答 - 我昨天搜索了好几个小时,我对所给出的许多回答的讽刺感到失望,这些回答要么没有回答问题,要么他们自己问与问题无关的 OP 问题 - 这让我们寻找答案变得混乱。我确实做了一些研究,最后在这里与那些知识渊博的人核实一下,可能会从不同的角度有所启发。

谢谢

【问题讨论】:

  • $_SESSION 是一个全局关联数组 - 所以它的工作方式与任何其他数组一样。
  • 编辑超时,无论如何:$obj 是对 xml 对象的引用。
  • $obj = simplexml_load_string(path/to/xml/file) 错误,请改用simplexml_load_file()。使用$obj->asXML(); 将其序列化为字符串保存
  • 嗨!感谢您的回复!我通常做 ...file() 但遵循另一个 S.O.链接说使用 ...string(),但没想到使用“asXML()”谢谢 - 我会试试的

标签: php xml session


【解决方案1】:

您可以改为保存对象其序列化字符串 $xml->asXML();

//set $_SESSION['xml'] = $xml->asXML(); //get $xml = new SimpleXMLElement($_SESSION['xml']);

【讨论】:

  • 您好,感谢您的回复。我没有查过asXML,但会。但是对于未来的读者(和我自己),您是指命令“serialize()”还是 asXML() 是序列化器?
  • asXML 是更多的解析器,它将 xml 对象转换为字符串,您可以在此处查看更多详细信息 - php.net/manual/en/simplexmlelement.asxml.php