从 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> 并输出值。