显示"类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
没有办法将特定节点和子节点作为字符串返回。