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 您之后的任何内容中,但希望这足以让您开始。
我很难解析这个。我更像是一名 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 您之后的任何内容中,但希望这足以让您开始。