我尝试使用simplexml_load_string从以下XML响应中获取Status和Text值;
<?xml version="1.0" encoding="utf-16"?>
<cXML payloadID="online" xml:lang="en" timestamp="2017-12-04T15:57:47.6693296+00:00">
<Response>
<Status code="402" text="	
 product 325552not in customer[20690] pricelist" />
</Response>
</cXML>
在我的PHP代码中,我从$ reply:
获取上面的XML$reply = curl_exec($curl);
然后我就这样使用simplexml_load_string:
$responseData = simplexml_load_string($reply);
echo 'Sync Order - '. $order->getIncrementId() . ' Status '. $responseData->Response->Status['code'] .' - '. $responseData->Response->Status['text'];
但是,这似乎无法从上面的XML响应中获取代码和文本。想知道是否有人有任何想法可以提供帮助?
谢谢。
注意:cXML是正确的。
答案 0 :(得分:0)
我已尝试使用添加的xml标头和UTF-16编码位,但无法加载错误...
PHP警告:simplexml_load_string():实体:第1行:解析器错误: 标有UTF-16但在
中有UTF-8内容的文件
简单但粗略的方法是将xml元素中的UTF更改为UTF8 ...
$reply = preg_replace('/(<\?xml[^?]+?)utf-16/i', '$1utf-8', $reply);
$responseData = simplexml_load_string($reply);
然后按预期给出输出......
Status 402 -
product 325552not in customer[20690] pricelist