我正在使用Amazon API,当我得到响应时,它看起来像这样。
<GetMatchingProductForIdResult Id="082686322638" IdType="UPC" status="Success">
<Products>
<Product>
<Identifiers>
<MarketplaceASIN>
<MarketplaceId>ATVPDKIKX0DER</MarketplaceId>
<ASIN>B00TU53O8Q</ASIN>
</MarketplaceASIN>
</Identifiers>
<AttributeSets>
<ns2:ItemAttributes xmlns:ns2="http://mws.amazonservices.com/schema/Products/2011-10-01/default.xsd" xml:lang="en-US">
<ns2:Binding>Toy</ns2:Binding>
<ns2:Brand>Rubie's</ns2:Brand>
<ns2:Color>BLACK</ns2:Color>
<ns2:Department>unisex-child</ns2:Department>
<ns2:Feature>Half Helmet mask accessory covers face; one size fits most</ns2:Feature>
<ns2:Feature>Officially licensed Star Wars Episode VII costume accessory; as worn by Kylo Ren in Star Wars Episode VII: The Force Awakens</ns2:Feature>
<ns2:Feature>Helmet has faux battle damage representing a pivotal moment in the movie</ns2:Feature>
<ns2:Feature>Kylo Ren costumes and additional accessories available separately</ns2:Feature>
<ns2:Feature>Rubie's offers costumes and accessories from Star Wars original and prequel trilogies as well as the Clone Wars series; great group and family costume ideas</ns2:Feature>
<ns2:ItemDimensions>
<ns2:Height Units="inches">10.00</ns2:Height>
<ns2:Length Units="inches">10.00</ns2:Length>
<ns2:Width Units="inches">10.00</ns2:Width>
<ns2:Weight Units="pounds">0.13</ns2:Weight>
</ns2:ItemDimensions>
<ns2:IsAdultProduct>false</ns2:IsAdultProduct>
<ns2:Label>Rubies - Domestic</ns2:Label>
<ns2:ListPrice>
<ns2:Amount>9.99</ns2:Amount>
<ns2:CurrencyCode>USD</ns2:CurrencyCode>
</ns2:ListPrice>
<ns2:Manufacturer>Rubies - Domestic</ns2:Manufacturer>
<ns2:ManufacturerMaximumAge Units="months">120.0</ns2:ManufacturerMaximumAge>
<ns2:ManufacturerMinimumAge Units="months">60.0</ns2:ManufacturerMinimumAge>
<ns2:Model>32263</ns2:Model>
<ns2:NumberOfItems>1</ns2:NumberOfItems>
<ns2:PackageDimensions>
<ns2:Height Units="inches">4.00</ns2:Height>
<ns2:Length Units="inches">9.20</ns2:Length>
<ns2:Width Units="inches">8.20</ns2:Width>
<ns2:Weight Units="pounds">0.15</ns2:Weight>
</ns2:PackageDimensions>
<ns2:PackageQuantity>1</ns2:PackageQuantity>
<ns2:PartNumber>32263</ns2:PartNumber>
<ns2:ProductGroup>Toy</ns2:ProductGroup>
<ns2:ProductTypeName>TOYS_AND_GAMES</ns2:ProductTypeName>
<ns2:Publisher>Rubies - Domestic</ns2:Publisher>
<ns2:Size>One Size</ns2:Size>
<ns2:SmallImage>
<ns2:URL>http://ecx.images-amazon.com/images/I/41XuPVJMMkL._SL75_.jpg</ns2:URL>
<ns2:Height Units="pixels">75</ns2:Height>
<ns2:Width Units="pixels">66</ns2:Width>
</ns2:SmallImage>
<ns2:Studio>Rubies - Domestic</ns2:Studio>
<ns2:Title>Star Wars: The Force Awakens Child's Kylo Ren Half Helmet</ns2:Title>
<ns2:Warranty>No Warranty</ns2:Warranty>
</ns2:ItemAttributes>
</AttributeSets>
<Relationships/>
<SalesRankings>
<SalesRank>
<ProductCategoryId>toy_display_on_website</ProductCategoryId>
<Rank>5183</Rank>
</SalesRank>
<SalesRank>
<ProductCategoryId>2229575011</ProductCategoryId>
<Rank>11</Rank>
</SalesRank>
</SalesRankings>
</Product>
</Products>
</GetMatchingProductForIdResult>
如何获取销售排名,金额,产品变暗,ID和ASIN? 我一直在寻找一段时间,并且没有找到关于结肠的任何信息。
我尝试使用的代码是:
for($i = 0; $i < (count($groupedArrays) - 0); $i++){
$xmlFilePath = 'xml/' . $file_name . $i . '.xml';
$xml = simplexml_load_file($xmlFilePath);
foreach($xml->children() as $items) {
if ($items->GetMatchingProductForIdResult->Error) {
continue;
}
$upcTag = $items['Id'] . ',';
if($items->GetMatchingProductForIdResult->Products->Product->AttributeSets->Relationship == FALSE){
echo $items->GetMatchingProductForIdResult->Products->Product->AttributeSets->SalesRankings->SalesRank[0] . ',';
} else {
echo $items->GetMatchingProductForIdResult->Products->Product->AttributeSets->Relationship->VariationParent->Identifiers->MarketplaceASIN->ASIN . ',';
}
$subject = "<ns2:Amount></ns2:Amount>";
preg_match_all('/<[^:]*:([^>]*)>(.*)<\/[^>]*>/', $subject, $matches);
$i = 1;
$ii = 0;
foreach ($matches as $key => $value) {
$newArr[$matches[$i][$ii]] = $matches[$ii][$ii];
$ii++;
$i++;
}
$result = array_filter($newArr);
foreach($result as $key => $value){
echo $key." = ".$value. "<br/>";
};
}
在此之前有一个for循环获取响应并将其保存为我的xml文件夹中的.xml。我无法弄清楚我做错了什么,非常感谢帮助!我已经在这部分工作了8-9个小时。提前谢谢!
答案 0 :(得分:1)
如果您想从xml获取属性,可以使用simplexml_load_file。
要循环<ns2:ItemAttributes..
,您可以使用SimpleXMLElement children方法和相应的命名空间“ns2”
也许这个获得一些属性的例子可以帮到你:
$xml = simplexml_load_file($xmlFilePath);
$ns = $xml->getNamespaces(true);
$asin = '';
$salesRankings = array();
$amount = '';
foreach ($xml->Products->Product as $product) {
$asin = (string)$product->Identifiers->MarketplaceASIN->ASIN;
foreach ($product->SalesRankings->SalesRank as $salesRank) {
$salesRankings[] = array(
"ProductCategoryId" => (string)$salesRank->ProductCategoryId,
"Rank" => (string)$salesRank->Rank
);
}
foreach ($product->AttributeSets->children($ns['ns2']) as $itemAttributes) {
$amount = (string)$itemAttributes->ListPrice->Amount;
}
}