php代码中的错误“无法将类DOMDocument的对象转换为字符串”


Error in php code "Object of class DOMDocument could not be converted to string"

显示"类DOMDocument的对象无法转换为字符串"的下面代码。我怎样才能解决这个问题呢?

$rs=$_SESSION['hotelavail_rs'];
// I have stored xml response in a session.
// xml response should be string type.
$str=(string)$rs;
$DOC = new DOMDocument();
$xml =new SimpleXMLElement($str);
$DOC->loadXML($str);
$Data = Parse($DOC->firstChild);

根据DOMDocument的文档,您调用saveXML()将XML转储为字符串。

我假设错误发生在这一行?

$str=(string)$rs;

在这种情况下,您应该将其更改为

$str = $rs->saveXML();

但是既然你似乎要把它全部加载回一个DOMDocument,为什么不这样做呢?

$rs = $_SESSION['hotelavail_rs'];
$Data = Parse($rs->firstChild);

如果错误稍后发生(例如在Parse函数中),则需要不同的解决方案。知道抛出错误的确切行是很有帮助的。

注意:以上都没有经过测试,我只是按照文档说的做。

我看到两个潜在的问题。我说潜在的,因为我不知道错误是由哪一行引起的。

  • 您确定XML在会话中被保存为字符串吗?你可能想尝试var_dump($_SESSION['hotelavail_rs']);,并确保它是一个字符串,而不是一个DOMDocument对象。如果不是字符串,那将导致$str=(string)$rs;行出现问题。
  • 另一个潜在的问题是Parse()函数。它是期待一个DOMNode或字符串?如果它期待一个字符串,那将不起作用,因为DOMDocument::firstNode返回一个DOMNode对象。不幸的是,DOMDocument没有办法将特定节点和子节点作为字符串返回。