您好我将此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()
我尝试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
你能告诉我这是什么问题吗?
答案 0 :(得分:1)
你应该确保xml声明前面没有空格,这些空格应该始终是xml字符串的第一个字节。
尝试使用trim
确保确实如此:
simplexml_load_string(trim($response->getBody()));