无法解析响应

时间:2017-11-28 14:47:40

标签: php xml laravel xml-parsing simplexml

您好我将此XML作为回复:

<?xml version="1.0"?>
<Response>
  <Environment>PRODUCTION</Environment>
  <Method/>
  <ResponseCode>03</ResponseCode>
  <ResponseDescription>Invalid Merchant</ResponseDescription>
  <Fee>0.00</Fee>
</Response>

有人可以告诉我如何解析它吗?

如果打印$response->getBody()->getContents()

,我得到的xml

我尝试simplexml_load_string($response->getBody()),这给了我一个错误:

  

simplexml_load_string():实体:第2行:解析器错误:XML   声明只允许在文件开头

也可以尝试simplexml_load_string($response->getBody()->getContents())这样:

$xml = simplexml_load_string($response->getBody()->getContents()); if ($xml === false) { echo "Failed loading XML: "; foreach(libxml_get_errors() as $error) { echo "<br>", $error->message; } } else { print_r($xml); }

它只返回Failed loading XML: without any error

同时尝试使用$xml = new SimpleXMLElement($response->getBody());并收到此错误:String could not be parsed as XML

你能告诉我这是什么问题吗?

1 个答案:

答案 0 :(得分:1)

你应该确保xml声明前面没有空格,这些空格应该始终是xml字符串的第一个字节。

尝试使用trim确保确实如此:

simplexml_load_string(trim($response->getBody()));