尝试从 Soap XML 输出中提取值

时间:2021-07-22 13:26:11

标签: php xml soap

我正在使用 PHP SoapClient 调用 SOAP 服务。

我正在使用以下代码返回以下视图

$response = $client->Get($request); 
echo '<pre>';
print_r($response);
echo '</pre>';
echo '<hr>';

这是回复

stdClass Object
(
    [TransactionID] => 17ACE7B75CB6SDBX
    [ResponseType] => SYNC
    [Parameters] => stdClass Object
        (
            [Param] => stdClass Object
                (
                    [_] => SANDBOX20101001123321125.168.214.72125.168.253.29912003D60E04CC4C1F8
                    [id] => SessionLogRecord
                )

        )

)

这里是 ,显示其中我想要提取的元素

<onlinesessionrecord><serviceid>SANDBOX</serviceid><datetime>20101001123321</datetime><ipaddress>125.168.214.72</ipaddress><nasipaddress>125.168.253.2</nasipaddress><nasport>9912</nasport><sessionid>003D60E04CC4C1F8</sessionid></onlinesessionrecord>

例如,我试图从上面的中提取

我尝试使用以下方法显示它,但出现错误“尝试读取字符串上的属性“onlinesessionrecord””

$data = $response->Parameters->Param->_->onlinesessionrecord->ipaddress;
print_r($data);

如果有人知道我做错了什么,您的建议将不胜感激。 我确定这很简单,我似乎只是在与 xml 斗争。

--- 第二天,在评论帮助后的进一步发现--- 所以,感谢下面的评论,我现在已经到了这一点。如果我使用以下内容:-

        $data = simplexml_load_string($response->Parameters->Param->_);
        $out = $data->IPAddress; // same if I do the following $data[0]->IPAddress;
        print_r($out);

我明白了:-

SimpleXMLElement Object ( [0] => 125.168.214.72 ) if I do the below.

但我只想提取 IPAddress 值并将其分配给一个变量。我尝试了两种方法

$out = $data->IPAddress;

$out = $data[0]->IPAddress;

两者都给出相同的输出,我只想获得实际的 IPAddress 并将其分配给一个变量。

0 个答案:

没有答案