我正在努力解析这个问题。我更像是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。
答案 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中,但希望这足以让您入门。