易趣API单项调用,项目细节

时间:2018-03-19 13:41:00

标签: php ebay-api

我正在努力解析这个问题。我更像是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)

它没有解析EACH NameValueList。

1 个答案:

答案 0 :(得分:1)

你的代码中有太多的层,我假设了一些东西(使用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中,但希望这足以让您入门。