eBay API 单品调用,项目细节

eBay API Single Item Call, Item Specifics

我很难解析这个。我更像是一名 Java 开发人员,所以我使用数组实现了这一点。

我如何才能在 PHP 中解决这个问题?

<ItemSpecifics>
   <NameValueList>
      <Name>Professional Grader</Name>
      <Value>Professional Sports (PSA)</Value>
   </NameValueList>
   <NameValueList>
      <Name>Year</Name>
      <Value>2012</Value>
   </NameValueList>
   <NameValueList>
      <Name>Card Attributes</Name>
       <Value>Rookie</Value>
      </NameValueList>
</ItemSpecifics>

这是 eBay 在 XML

中的回复

我正在像这样设置 specifcsName 和 specificsValue

if ($item->ItemSpecifics != NULL ) {
    if ($item->ItemSpecifics->NameValueList != NULL ) {
      if ($item->ItemSpecifics->NameValueList->Name != NULL ) {
        $itemSpecificName = $item->ItemSpecifics->NameValueList->Name;
      } else {
        $itemSpecificName = NULL;
      }
    } else {
      $itemSpecificName =  NULL;
    }
  } else {
    $itemSpecificName = NULL;
  }

  if ($item->ItemSpecifics != NULL ) {
    if ($item->ItemSpecifics->NameValueList != NULL ) {
      if ($item->ItemSpecifics->NameValueList->Value != NULL ) {
        $itemSpecificValue = $item->ItemSpecifics->NameValueList->Value;
      } else {
        $itemSpecificValue = NULL;
      }
    } else {
      $itemSpecificValue =  NULL;
    }
  } else {
    $itemSpecificValue = NULL;
  }

这里是我试图显示它的地方。

<?php
          if ($itemSpecificName != NULL || $itemSpecificValue != NULL) {
            foreach ($item->ItemSpecifics as $key => $value) {
              foreach ($item->ItemSpecifics->NameValueList as $key => $value) {
                foreach ($itemSpecificName as $key => $value) {
                  ?> <li> <?php echo($value);?></li><?php
                  foreach ($itemSpecificValue as $key => $value) {
                    ?> <span style="margin-left:25px;"> <?php echo($value);?></span><br><?php
                  }
                }
              }
            }


          } else {
            ?> <i>Not specified</i> <?php
          }
          ?>

以上代码返回以下内容:

 Professional Grader     
 Professional Sports (PSA)  
 Professional Grader
 Professional Sports (PSA)  
 Professional Grader     
 Professional Sports (PSA)

它没有解析每个 NameValueList。

您的代码中有太多层,我假设了一些事情(使用 SimpleXML 并且在您显示的内容之上还有另一层数据)。但是输出的简单版本就像...

$data = <<< XML
<OuterLayer>
<ItemSpecifics>
   <NameValueList>
      <Name>Professional Grader</Name>
      <Value>Professional Sports (PSA)</Value>
   </NameValueList>
   <NameValueList>
      <Name>Year</Name>
      <Value>2012</Value>
   </NameValueList>
   <NameValueList>
      <Name>Card Attributes</Name>
       <Value>Rookie</Value>
      </NameValueList>
</ItemSpecifics>
</OuterLayer>
XML;
$item = simplexml_load_string($data);
foreach ($item->ItemSpecifics as $value) {
    foreach ($value->NameValueList as $value) {
        echo $value->Name."/".$value->Value.PHP_EOL;
    }
}

我注意到你的循环的一件事是,正如你从上面的代码中看到的,一个循环的输出充当下一个循环的起点。这给出了访问不同级别数据的嵌套效果。

您必须将输出包装在 HTML 您之后的任何内容中,但希望这足以让您开始。