在Laravel / PHP中获取字符串XML节点值作为字符串

时间:2018-11-27 11:42:12

标签: php xml laravel

我从服务器收到XML响应。这就是回应。

<response>
     <response_code>Success</response_code>
</response>

我将此响应存储在变量$response中。对于失败还有另一个类似的响应。因此,我只想检查节点值是Success还是Failure

我是做什么的

$xmlString =simplexml_load_string($response) or die("Error: Cannot create object"); 

$resp_code =  (string)$xmlString->response_code;

if($resp_code == 'Success'){
  echo 'Successfully completed';
}
else{
  echo 'not done';
}

但是if条件不起作用。我猜这里的$resp_code不是字符串。

我也尝试了$xmlString->response_code->__toString();,但是没有用。 我想念什么?有人请帮忙。

P.S:如果有帮助,我正在Laravel中进行此操作。

2 个答案:

答案 0 :(得分:1)

测试代码后,它可以完美运行。

simplexml_load_string()函数将给定的响应解析为一个对象,并使用类型转换将您的输出确定为字符串。

如果您继续获得除成功以外的其他结果,则可能是因为服务器给出的响应不成功,或者可能是大小写字母混合使用。

尝试编辑部分代码

if(strtolower($resp_code) == 'success'){
  echo 'Successfully completed';
} else{
  echo 'not done';
}

应该把这种性质的任何东西混在一起。

答案 1 :(得分:0)

或者,

如果您想摆脱PHP复杂的xml处理方法,可以使用我的软件包:

https://github.com/mtownsend5512/xml-to-array

$xmlArray = xml_to_array($response);

$resp_code =  $xmlArray['response_code'];

if($resp_code == 'Success'){
  echo 'Successfully completed';
}
else{
  echo 'not done';
}