【问题标题】:Parse XML tags in PHP在 PHP 中解析 XML 标签
【发布时间】:2014-08-21 14:51:51
【问题描述】:

我从 WSDL 收到类似这样的响应:

string(221) : "RMT_TOKEN_ACKTHAMORTEST91001e659a4f4-8fb1-4fe1-95dd-62da8d4c3fb401"

文档指出,响应应该是,

<TRX_MESSAGE>
<MESSAGE>
<MESSAGE_ID>RMT_TOKEN_ACK</MESSAGE_ID>
<USR_NAME>THAMORTEST</USR_NAME>
<AGENT_CODE>91001</AGENT_CODE>
<TOKEN>e659a4f4-8fb1-4fe1-95dd-62da8d4c3fb4</TOKEN>
<RESP_CODE>01</RESP_CODE>
</MESSAGE>
</TRX_MESSAGE>

当我计算原始响应字符时,我发现它是 221。但是,我在响应中看不到整个字符串。您可以看到我的结果字符串中没有 XML 标记。如何从中获取token?

我知道,这很令人困惑。如果您需要任何类型的信息,请告诉我。谢谢。

【问题讨论】:

  • 对我来说看起来像是 message_id、usr_name、agent_code、token 和 resp_code 的连接......即 XML 去除了标签。
  • 您没有通过strip_tags() 传递您的回复,是吗?
  • 试试 var_dump($response) 其中 $response 是你从 wsdl 得到的。浏览器会将该字符串视为 html 并且不会显示标签。
  • 我为此发布了答案。感谢您的努力。

标签: php xml wsdl


【解决方案1】:

我想通了。

$token_string = $result->getTokenReturn;

输出:

$token_string = "RMT_TOKEN_ACKTHAMORTEST91001e659a4f4-8fb1-4fe1-95dd-62da8d4c3fb401"

PHP

$dom = new DOMDocument;
$dom->loadXML($token_string);
$tokens = $dom->getElementsByTagName('TOKEN');
foreach ($tokens as $token) {
    echo $token->nodeValue, PHP_EOL;
}

必需的输出(仅限令牌)

e659a4f4-8fb1-4fe1-95dd-62da8d4c3fb4

【讨论】:

    猜你喜欢
    • 2016-02-12
    • 2013-07-07
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    相关资源
    最近更新 更多