【问题标题】:Get string XML node value as string in laravel / PHP在laravel / PHP中获取字符串XML节点值作为字符串
【发布时间】:2018-11-28 14:16:29
【问题描述】:

我收到了来自服务器的 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-&gt;response_code-&gt;__toString();,但没有成功。 我错过了什么?有人请帮忙。

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

【问题讨论】:

  • 尝试使用 'SimpleXMLElement($response)' 但 Laravel 抛出错误 - 找不到函数。
  • 你试过这个link ?
  • “没用”是什么意思?您尝试过什么调试问题?如果某些东西不起作用(就像您在第一条评论中所写的那样),请准确解释。此外,请勿将此类信息放在评论部分;而是编辑您的问题

标签: php xml laravel


【解决方案1】:

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

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

如果您不断得到结果而不是成功,可能是因为服务器给您的响应不成功,或者可能混合使用了大写和小写字母。

尝试编辑这部分代码

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

这应该包含任何这种性质的混合。

【讨论】:

  • 当我做echo $response 时,我可以看到响应是成功的。它提供了与我在上面给出的相同的 xml。当我echo $resp_code 时,我只得到Successif($resp_code == 'Success' ) 不会返回true。我尝试降低外壳但没有帮助。
  • 想通了。响应实际上是“成功”,空格不是“成功”。使用修剪,它的工作。感谢您的帮助。
【解决方案2】:

或者,

如果你想摆脱 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';
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 2011-03-19
    相关资源
    最近更新 更多