我正在使用namecheap API来做一些事情,这是我第一次使用API而且遇到了一些问题。
这是我到目前为止所做的:
$ApiKey = "**********************";
$ApiUser = "*****";
$UserName = "*********";
$ClientIP = "********";
$NamecheapURI = "https://api.namecheap.com/xml.response";
$executionURL = $NamecheapURI."?ApiUser=".$ApiUser."&ApiKey=".$ApiKey."&UserName=".$UserName."&Command=namecheap.domains.check&ClientIp=".$ClientIP."&DomainList=".$domain;
$xml = simplexml_load_file($executionURL);
print_r($xml);
当打印$ xml时,我返回了简单的XML对象:
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] => facebook.com
[Available] => false
[ErrorNo] => 0
[Description] =>
[IsPremiumName] => false
[PremiumRegistrationPrice] => 0
[PremiumRenewalPrice] => 0
[PremiumRestorePrice] => 0
[PremiumTransferPrice] => 0
[IcannFee] => 0
[EapFee] => 0
)
)
)
[Server] => PHX01APIEXT03
[GMTTimeDifference] => --5:00
[ExecutionTime] => 0.008
)
我的问题超出了这个范围,我如何前进并从中提取数据?
我已经尝试将其视为一个数组,但我无处可去,当使用is_array()测试它是否是一个数组时,它说它不是我不理解的......
如果这是一个菜鸟问题我道歉,我对此有点新意。简而言之,我需要做些什么来从中提取数据?
提前致谢!
答案 0 :(得分:1)
学习使用SimpleXML比尝试将其转换为arrays / json /其他任何东西和简单(因此名称)要好得多。一个简单的例子......
$response = '<?xml version="1.0" encoding="UTF-8"?>
<CommandResponse Type="namecheap.domains.check">
<DomainCheckResult Domain="facebook.com">
<Element>1234</Element>
<Element>12345</Element>
</DomainCheckResult>
</CommandResponse>';
$xml = simplexml_load_string($response);
echo "DOmain=".$xml->DomainCheckResult['Domain'].PHP_EOL;
foreach ( $xml->DomainCheckResult->Element as $value) {
echo "Value=".(string)$value.PHP_EOL;
}
...输出
DOmain=facebook.com
Value=1234
Value=12345
您必须根据自己的XML进行调整,但想法是,如果要访问项目的元素,则使用对象表示法->
,如果需要获取属性,请使用数组表示法{ {1}}。
因此,在上面的代码中,第一个echo([]
)获取$xml->DomainCheckResult['Domain']
元素并输出Domain属性。
然后<DomainCheckResult>
循环说取foreach
内的每个<Element>
并输出值。