【问题标题】:PHP XML converter responsePHP XML 转换器响应
【发布时间】:2017-08-08 03:37:59
【问题描述】:

我在XML 上很新,我目前在 PHP 中工作,我向其他服务器发出请求,该服务器通常使用 XML 返回回调

无论如何,我不会谈论我是如何得到响应的,而是如何转换XML 响应。

它们是XML响应的两种类型,我们可以称之为$response

第一:

<BASEELEMENT SCHEMA="RESULT" METHOD="ADD-MBX">
   <RETURN_VALUE>4</RETURN_VALUE>
   <ERROR_DESCRIPTION>
      <![CDATA[Error (7004): Login name already exists. Please use another login name.]]>
   </ERROR_DESCRIPTION> 
</BASEELEMENT>

第二个是:

<baseelement schema="TIMEOUT" method="ADD-MBX"></baseelement>

我已经搜索过了,我知道如何将 xml 响应转换为对象或数组,即

$response = new \SimpleXMLElement($response);

转换后:

object(SimpleXMLElement)#256 (3) {
  ["@attributes"]=>
  array(2) {
    ["SCHEMA"]=>
    string(6) "RESULT"
    ["METHOD"]=>
    string(7) "ADD-MBX"
  }
  ["RETURN_VALUE"]=>
  string(1) "4"
  ["ERROR_DESCRIPTION"]=>
  object(SimpleXMLElement)#257 (0) {
  }
}

我们可以看到ERROR_DESCRIPTION 变成了0

所以我想问一下,有没有xml converter 或者simplexml_load_string()new \SimpleXMLElement()

我无法使用该功能,因为我无法获得ERROR_DESCRIPTION

谢谢你:)

【问题讨论】:

  • 您究竟是如何尝试阅读ERROR_DESCRIPTION的?
  • 使用rest client,或echo "&lt;pre&gt;" var_dump() ,使用echo pre vardump,xml被隐藏,所以我使用inspect元素来查看xml响应@ThW

标签: php xml


【解决方案1】:

按原样加载它 -

$response = new \SimpleXMLElement($response);

您可以非常简单地获取值...

echo (string)($response->ERROR_DESCRIPTION).PHP_EOL;

如果您想要完整的内容(如 XML 版本)...

echo $response->ERROR_DESCRIPTION->asXML().PHP_EOL;

使用 XPath,您可以通过...获取值

echo (string)$response->xpath("//ERROR_DESCRIPTION")[0].PHP_EOL;

您看到的输出表明 ERROR_DESCRIPTION 是 SimpleXMLElement 类型的对象,而不是它未加载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多