php代码中的错误";类DOMDocument的对象无法转换为字符串;

php代码中的错误";类DOMDocument的对象无法转换为字符串;,php,xml,Php,Xml,下面的代码显示“类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->lo

下面的代码显示“类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);
根据,调用
saveXML()
将XML转储为字符串

我假设错误发生在这条线上

$str=(string)$rs;
在这种情况下,您应该将其更改为

$str = $rs->saveXML();
但既然您似乎正在将所有内容重新加载到DOMDocument中,为什么不这样做呢

$rs = $_SESSION['hotelavail_rs'];
$Data = Parse($rs->firstChild);
如果该错误稍后发生(例如在
Parse
函数中),则需要不同的解决方案。知道抛出错误的确切线路会很有帮助

注意:以上所有内容都没有经过测试,我只是按照文档中的说明进行操作。

我发现了两个潜在问题。我之所以说势能,是因为我不知道错误是由哪条线引起的

  • 您确定XML在会话中保存为字符串吗?您可能想尝试
    var\u dump($\u会话['hotelavail\u rs'])
    并确保它是字符串而不是DOMDocument对象。如果它不是一个字符串,则会导致
    $str=(string)$rs出现问题
  • 另一个潜在问题是
    Parse()
    函数。它需要一个
    DOMNode
    还是一个字符串?如果它需要一个字符串,那么它将无法作为
    DOMDocument::firstNode
    返回一个
    DOMNode
    对象。不幸的是,
    DOMDocument
    无法将特定节点和子节点作为字符串返回

我已将xml响应保存在array@Hearaman-但您是如何将其保存在阵列中的?作为字符串还是将其另存为
DOMDocument
对象?你能告诉我你用来在数组中保存XML的代码行吗?你说的数组是指
$\u会话
数组吗?$res包含这个curl响应@Hearaman-另一个问题是我们不知道是哪一行引起了问题。它可能不是商店的样子。它可能是我上面提到的
Parse
函数。如果该函数需要一个字符串,它将无法工作,因为
$DOC->firstNode
返回一个DOMNode,而不是
字符串$xmlf=$xa->xml2array($res)$xmla=($xmlf[“soapenv:Envelope”][“soapenv:Body”][“ns1:OTA_HotelAvailRQResponse”][“OTA_HotelAvailRQReturn”])$_会话['hotelavail_rs']=$xmla;。现在$xmla是一个数组,我恐怕你不明白你在做什么。为什么在这里并行使用两种不同的php扩展(SOMSocument和SimpleXML)?顺便说一句,$DOC->firstChild已经