从 SimpleXMLElement 对象中提取值
Pull values from SimpleXMLElement Object
我正在使用 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() 测试它是否是一个数组时,它说它不是,我不明白...
如果这是一个菜鸟问题,我深表歉意,我对此有点陌生。简而言之,我需要做什么才能从中提取数据?
提前致谢!
学习使用 SimpleXML 比尝试将其转换为 arrays/json/anything else 和 simple(因此得名)要好得多。一个简单的例子...
$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 来调整它,但想法是,如果你想访问一个项目的元素,你可以使用对象表示法 ->
,如果你需要获得一个属性,使用数组表示法 []
.
所以在上面的代码中,第一个echo($xml->DomainCheckResult['Domain']
)得到了<DomainCheckResult>
元素,输出了Domain属性
然后 foreach
循环表示获取 <DomainCheckResult>
中的每个 <Element>
并输出值。
我正在使用 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() 测试它是否是一个数组时,它说它不是,我不明白...
如果这是一个菜鸟问题,我深表歉意,我对此有点陌生。简而言之,我需要做什么才能从中提取数据?
提前致谢!
学习使用 SimpleXML 比尝试将其转换为 arrays/json/anything else 和 simple(因此得名)要好得多。一个简单的例子...
$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 来调整它,但想法是,如果你想访问一个项目的元素,你可以使用对象表示法 ->
,如果你需要获得一个属性,使用数组表示法 []
.
所以在上面的代码中,第一个echo($xml->DomainCheckResult['Domain']
)得到了<DomainCheckResult>
元素,输出了Domain属性
然后 foreach
循环表示获取 <DomainCheckResult>
中的每个 <Element>
并输出值。