Whether you're requesting information via URLs or SOAP requests, the data you can access is the same, and it's sent in a very similar XML format.
To work with XML responses, you need a piece of software, typically an add-on module, called an XML parser. Almost every programming environment has one; you just need to find out which one is available to you and the syntax for using it. The parser's function is straightforward: to load an XML document and make its contents available to your program either as a data structure or a series of functions.
Once an XML document is loaded, you can get at the specific data it contains with a simple query language called XPath. While parser syntaxes vary across languages and platforms, XPath is rapidly gaining ground as a standard way to access the data. Here's a quick example of how XPath queries work. If you request product information, you need different pieces of that information at different times. You can get to the specific information you need by specifying a path through the document. Here's an abbreviated AWS response:
<?xml version="1.0" encoding="UTF-8" ?> <ProductInfo> <Details url="http://amazon.com/o/0140042598"> <Asin>0140042598</Asin> <ProductName>On the Road</ProductName> <Catalog>Book</Catalog> <Authors> <Author>Jack Kerouac</Author> </Authors> </Details> </ProductInfo>
As you can see, ProductInfo is the top-level tag, and all other tags are within that path. If you just wanted to get the product name, you could specify the path ProductInfo/Details/ProductName. The slashes represent levels of nesting, and the names are tag names. Attributes are values located within a tag and are accessed with the @ symbol. So, to get at URL information, you could use the path ProductInfo/Details/@url. You'll see XPath queries like these in many of the hacks in this chapter, and, assuming the availability of an XPath module, they work similarly across development environments.
Now let's take a look at the data that's available through Amazon Web Services. As mentioned, you can request either heavy or lite responses depending on the value you set for the type variable. Here's a list of information available in the lite response, along with the XML path to access it:
Detail |
Path |
---|---|
ASIN |
Details/Asin |
Product Name |
Details/ProductName |
Catalog |
Details/Catalog |
Author(s) |
Details/Authors/Author |
Release Date |
Details/ReleaseDate |
Manufacturer |
Details/Manufacturer |
Prices |
Details/ListPrice, Details/OurPrice, Details/UsedPrice |
Image URLs (small, medium, large) |
Details/ImageUrlSmall, Details/ImageUrlMedium, Details/ImageUrlLarge |
Request Arguments (the values you passed to AWS to make the request) |
Request/Args/Arg |
A heavy response includes all the information in the lite response, plus:
Detail |
Path |
---|---|
Sales Rank |
Details/SalesRank |
Lists (Listmania! lists that contain the product) |
Details/Lists/ListId |
Browse Node Names (categories) |
Details/BrowseList/BrowseNode/BrowseName |
Media |
Details/Media |
ISBN |
Details/Isbn |
Availability |
Details/Availability |
Reviews |
Details/Reviews |
Average Customer Rating |
Details/Reviews/AvgCustomerRating |
Total Customer Reviews |
Details/Reviews/TotalCustomerReviews |
Full Customer Reviews (includes rating, summary, and text of the review) |
Details/Reviews/CustomerReview/Rating, Details/Reviews/CustomerReview/Summary, Details/Reviews/CustomerReview/Comment |
Similar Items (the ASINs of up to 5 similar items) |
Details/SimilarProducts/Product |
Now let's put this response data to work with some hacks!