无法使用simplexml_load_string从XML响应访问属性

时间:2017-12-04 16:07:11

标签: php simplexml simplexml-load-string cxml

我尝试使用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="&#x9;&#xA; 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是正确的。

1 个答案:

答案 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