2017-07-31 102 views
1

我正在发送一个XML URL以返回一些我已经设法显示为多个数组的数据。我发现很难区分一些特定的数据,并希望有人能够教我如何正确地将这些数据添加到变量中。从XML响应访问数组部分的问题

下面是使用print_r();

SimpleXMLElement Object ([@attributes] => Array ([Status] => OK) [Errors] => SimpleXMLElement Object () [Warnings] => SimpleXMLElement Object () [RequestedCommand] => namecheap.domains.check [CommandResponse] => SimpleXMLElement Object ([@attributes] => Array ([Type] => namecheap.domains.check) [DomainCheckResult] => SimpleXMLElement Object ([@attributes] => Array ([Domain] => test.com [Available] => false [ErrorNo] => 0 [Description] => [IsPremiumName] => false [PremiumRegistrationPrice] => 0 [PremiumRenewalPrice] => 0 [PremiumRestorePrice] => 0 [PremiumTransferPrice] => 0 [IcannFee] => 0 [EapFee] => 0))) [Server] => PHX01APIEXT01 [GMTTimeDifference] => --4:00 [ExecutionTime] => 0.045) 

我通常可以管理阵列好吗全阵列,虽然是“@属性”在这里被绊倒了我...这是我的脚本到目前为止(裸记住我只是在这里测试)。

$xml = simplexml_load_string($data); 
print_r($xml); 

echo '<br><br>'; 

$status = current($xml->attributes()); 
$results = $xml->DomainCheckResult->attributes(); 
echo $status['Status']; 
echo '<br><br>'; 

print_r($results); 

$status变量工作和回声的 'OK'。 的$results变量似乎只显示“SimpleXMLElement对象()”

我试图瞄准这些专门 -

[Domain] => test.com [Available] => false [ErrorNo] => 0 [Description] => [IsPremiumName] => false [PremiumRegistrationPrice] => 0 [PremiumRenewalPrice] => 0 [PremiumRestorePrice] => 0 [PremiumTransferPrice] => 0 [IcannFee] => 0 [EapFee] => 0 

但我似乎无法得到远远超出我已经是谁?我将如何使用这些数据来获得类似以下内容:

$domain_req = $xml[Domain]; 
$domain_avail = $xml[Available]; 

等等......?

按照要求,这里是原始的XML -

<ApiResponse xmlns="http://api.namecheap.com/xml.response" Status="OK"> 
<Errors/> 
<Warnings/> 
<RequestedCommand>namecheap.domains.check</RequestedCommand> 
<CommandResponse Type="namecheap.domains.check"> 
<DomainCheckResult Domain="test.com" Available="false" ErrorNo="0" Description="" IsPremiumName="false" PremiumRegistrationPrice="0" PremiumRenewalPrice="0" PremiumRestorePrice="0" PremiumTransferPrice="0" IcannFee="0" EapFee="0"/> 
</CommandResponse> 
<Server>PHX01APIEXT03</Server> 
<GMTTimeDifference>--4:00</GMTTimeDifference> 
<ExecutionTime>0.018</ExecutionTime> 
</ApiResponse> 
+0

可以显示原始XML而不是输出或'print_r'。 –

+0

@NigelRen我已经更新了我的问题 – Snappysites

回答

1

要访问这些,你应该用...

$status = current($xml->attributes()); 
$results = $xml->CommandResponse->DomainCheckResult->attributes(); 
echo $status['Status']; 

$domain_req = $results['Domain']; 
$domain_avail = $results['Available']; 

你必须使用引号一轮的名字。

+0

当我试图回应这些问题时,我什么也得不到?我不确定我的'$ result'变量是否设置正确? – Snappysites

+0

我已经更新了答案,这是$结果,它的分层略有不同。 (也是我在结果中错过了s)。 –