I am trying to parse an XML response from the Amazon API in PHP via simplexml_load_string().
The XML i get looks like that:
<?xml version="1.0" encoding="UTF-8"?>
<GetMatchingProductForIdResponse xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01">
<GetMatchingProductForIdResult Id="xxx" IdType="SellerSKU" status="Success">
<Products>
<Product>
<Identifiers>
<MarketplaceASIN>
<MarketplaceId>xxxx</MarketplaceId>
<ASIN>xxx</ASIN>
</MarketplaceASIN>
</Identifiers>
<AttributeSets>
<ns2:ItemAttributes xmlns:ns2="http://mws.amazonservices.com/schema/Products/2011-10-01/default.xsd" xml:lang="de-DE">
<ns2:Binding>Elektronik</ns2:Binding>
<ns2:Brand>Panasonic</ns2:Brand>
<ns2:Feature>xx</ns2:Feature>
<ns2:Feature>xxx</ns2:Feature>
<ns2:Feature>xxx</ns2:Feature>
<ns2:Feature>xxx</ns2:Feature>
<ns2:Feature>xxx</ns2:Feature>
<ns2:Label>Panasonic</ns2:Label>
<ns2:Manufacturer>Panasonic</ns2:Manufacturer>
<ns2:PackageDimensions>
<ns2:Height Units="inches">xx</ns2:Height>
<ns2:Length Units="inches">xx</ns2:Length>
<ns2:Width Units="inches">xxx</ns2:Width>
</ns2:PackageDimensions>
<ns2:PartNumber>xxx</ns2:PartNumber>
<ns2:ProductGroup>Computer & Zubehör</ns2:ProductGroup>
<ns2:ProductTypeName>COMPUTER_COMPONENT</ns2:ProductTypeName>
<ns2:Publisher>Panasonic</ns2:Publisher>
<ns2:SmallImage>
<ns2:URL>xxx.jpg</ns2:URL>
<ns2:Height Units="pixels">xx</ns2:Height>
<ns2:Width Units="pixels">xx</ns2:Width>
</ns2:SmallImage>
<ns2:Studio>Panasonic</ns2:Studio>
<ns2:Title>xxx</ns2:Title>
</ns2:ItemAttributes>
</AttributeSets>
<Relationships />
<SalesRankings />
</Product>
</Products>
</GetMatchingProductForIdResult>
<ResponseMetadata>
<RequestId>xx</RequestId>
</ResponseMetadata>
</GetMatchingProductForIdResponse>
My PHP code:
$response = $service->GetMatchingProductForId($request); //making the call
$response = $response->toXML();
$response = simplexml_load_string($response);
var_dump($response);
Unfortunatly the AttributeSets don't get converted into objects as you can see in the var_dump.
object(SimpleXMLElement)#9 (2) {
["GetMatchingProductForIdResult"]=>
object(SimpleXMLElement)#4 (2) {
["@attributes"]=>
array(3) {
["Id"]=>
string(5) "xxx"
["IdType"]=>
string(9) "SellerSKU"
["status"]=>
string(7) "Success"
}
["Products"]=>
object(SimpleXMLElement)#14 (1) {
["Product"]=>
object(SimpleXMLElement)#18 (4) {
["Identifiers"]=>
object(SimpleXMLElement)#23 (1) {
["MarketplaceASIN"]=>
object(SimpleXMLElement)#29 (2) {
["MarketplaceId"]=>
string(14) "xxx"
["ASIN"]=>
string(10) "xxxx"
}
}
["AttributeSets"]=>
object(SimpleXMLElement)#37 (0) {
}
["Relationships"]=>
object(SimpleXMLElement)#28 (0) {
}
["SalesRankings"]=>
object(SimpleXMLElement)#26 (0) {
}
}
}
}
["ResponseMetadata"]=>
object(SimpleXMLElement)#12 (1) {
["RequestId"]=>
string(36) "xxx"
}
}
Is something wrong with the XML?