无法从响应中解析 xml
Unable to parse xml from response
你好,我得到这个 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(): Entity: line 2: parser error : XML
declaration allowed only at the start of the document
也可以这样尝试 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); }
只有我returns Failed loading XML: without any error
.
也尝试使用 $xml = new SimpleXMLElement($response->getBody());
并得到这个错误:String could not be parsed as XML
你能告诉我问题是什么吗?
您应该确保 xml 声明前面没有空格,这些应该始终是 xml 字符串的第一个字节。
尝试使用 trim
来确保是这样:
simplexml_load_string(trim($response->getBody()));
你好,我得到这个 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(): Entity: line 2: parser error : XML declaration allowed only at the start of the document
也可以这样尝试 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); }
只有我returns Failed loading XML: without any error
.
也尝试使用 $xml = new SimpleXMLElement($response->getBody());
并得到这个错误:String could not be parsed as XML
你能告诉我问题是什么吗?
您应该确保 xml 声明前面没有空格,这些应该始终是 xml 字符串的第一个字节。
尝试使用 trim
来确保是这样:
simplexml_load_string(trim($response->getBody()));