我试图从下面的xml中提取数据而没有运气。
<?xml version="1.0"?>
<GetMatchingProductResponse xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01">
<GetMatchingProductResult ASIN="1908256052" status="Success">
<Product xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01" xmlns:ns2="http://mws.amazonservices.com/schema/Products/2011-10-01/default.xsd">
<Identifiers>
<MarketplaceASIN>
<MarketplaceId>A1F83G8C2ARO7P</MarketplaceId>
<ASIN>1908256052</ASIN>
</MarketplaceASIN>
</Identifiers>
<AttributeSets>
<ns2:ItemAttributes xml:lang="en-GB">
<ns2:Author>Slimming World</ns2:Author>
<ns2:Binding>Hardcover</ns2:Binding>
<ns2:Format>Illustrated</ns2:Format>
<ns2:IsEligibleForTradeIn>true</ns2:IsEligibleForTradeIn>
<ns2:Label>Slimming World</ns2:Label>
<ns2:Languages>
<ns2:Language>
<ns2:Name>english</ns2:Name>
<ns2:Type>Unknown</ns2:Type>
</ns2:Language>
<ns2:Language>
<ns2:Name>english</ns2:Name>
<ns2:Type>Original Language</ns2:Type>
</ns2:Language>
<ns2:Language>
<ns2:Name>english</ns2:Name>
<ns2:Type>Published</ns2:Type>
</ns2:Language>
</ns2:Languages>
<ns2:ListPrice>
<ns2:Amount>16.99</ns2:Amount>
<ns2:CurrencyCode>GBP</ns2:CurrencyCode>
</ns2:ListPrice>
<ns2:Manufacturer>Slimming World</ns2:Manufacturer>
<ns2:NumberOfItems>1</ns2:NumberOfItems>
<ns2:NumberOfPages>224</ns2:NumberOfPages>
<ns2:PackageDimensions>
<ns2:Height Units="inches">0.87</ns2:Height>
<ns2:Length Units="inches">9.69</ns2:Length>
<ns2:Width Units="inches">7.64</ns2:Width>
<ns2:Weight Units="pounds">1.85</ns2:Weight>
</ns2:PackageDimensions>
<ns2:ProductGroup>Book</ns2:ProductGroup>
<ns2:ProductTypeName>ABIS_BOOK</ns2:ProductTypeName>
<ns2:PublicationDate>2011-11-20</ns2:PublicationDate>
<ns2:Publisher>Slimming World</ns2:Publisher>
<ns2:SmallImage>
<ns2:URL>http://ecx.images-amazon.com/images/I/61aM-pJlQtL._SL75_.jpg</ns2:URL>
<ns2:Height Units="pixels">75</ns2:Height>
<ns2:Width Units="pixels">64</ns2:Width>
</ns2:SmallImage>
<ns2:Studio>Slimming World</ns2:Studio>
<ns2:Title>Slimming World Extra Easy All in One</ns2:Title>
</ns2:ItemAttributes>
</AttributeSets>
<Relationships/>
<SalesRankings>
<SalesRank>
<ProductCategoryId>book_display_on_website</ProductCategoryId>
<Rank>3304</Rank>
</SalesRank>
<SalesRank>
<ProductCategoryId>271146</ProductCategoryId>
<Rank>11</Rank>
</SalesRank>
<SalesRank>
<ProductCategoryId>1039764</ProductCategoryId>
<Rank>25</Rank>
</SalesRank>
<SalesRank>
<ProductCategoryId>270704</ProductCategoryId>
<Rank>38</Rank>
</SalesRank>
</SalesRankings>
</Product>
</GetMatchingProductResult>
<ResponseMetadata>
<RequestId>8d4fde2b-d2bb-4c06-800d-68eec2effcf3</RequestId>
</ResponseMetadata>
</GetMatchingProductResponse>
我使用以下函数返回并处理repsonses
public function getXML2($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$response = curl_exec($ch);
$xml = simplexml_load_string($response, NULL, NULL, "http://mws.amazonservices.com/schema/Products/2011-10-01");
$xml->registerXPathNamespace('ns2', 'http://mws.amazonservices.com/schema/Products/2011-10-01/default.xsd');
return $xml;
}
当我尝试循环数据时,我无法返回任何内容
foreach($xml->xpath('//ns2:ItemAttributes') as $event) {
$event->registerXPathNamespace('ns2', 'http://mws.amazonservices.com/schema/Products/2011-10-01/default.xsd');
echo var_export($event->xpath('//ns2:author'));
}
我做错了什么?
答案 0 :(得分:2)
你试过DOMDocument
吗?
$dom = new DOMDocument;
$dom->loadXML($xml);
$xpath = new DOMXPath($dom);
$xpath->registerNamespace('ns2', 'http://mws.amazonservices.com/schema/Products/2011-10-01/default.xsd');
$el = $xpath->query('//ns2:ItemAttributes/ns2:Author');
var_dump($el->item(0)->nodeValue);
//string(14) "Slimming World"