PHP XML解析:亚马逊产品API响应



我尝试使用以下操作:使用core php(没有任何框架或插件)&Amazon API

  1. 生成签名的URL
  2. 查询Amazon使用签名URL
  3. 查询某些关键字
  4. 获取XML格式的响应
  5. 解析XML&在HTML

    中以表格格式显示

    到目前为止,我已经能够完成直到第3步,但无法完成解析XML&的步骤4。显示数据。

附件:

  • XML文件的屏幕截图 - 我想显示带有红色箭头标记的项目。这些项目出现在XML文件中的10次
  • Google驱动器链接到实际XML文件

代码示例:

 $file = file_get_contents($request_url);
    $xml = simplexml_load_string($file);
    print_r($xml);

输出:我粘贴了我从上方获得的10个数组元素中的前2个,

([[0] => simperxmlelement对象([[ASIN] => 8184954018 [detailpageurl] => amazon.in/chanakyas-secrets-leadership-sivanandhan-radhakrishnan/dpp/8184954954018?mubscription inid = akiaj5b74j5b75b744db74.eprimant 1& linkCode = xm2& camp = 2025& creative = 165953&creatp; creativeasin = 8184954018 [itemLinks] => simperxmlemlement object([itemLink] => array([0]=> amazon.in/gp/registry/wishlist/add-item.html?asin.0 = 8184954018& subscriptionId = akiaj5b7eph4tj6yeuuq&= 30061200-21 21&linkcodecodequive = 30061200-21cruive 5.ccr.ccr.ump,2croute.ccr.ump,2ccroutsumptuiveutcument,2CRUMEATE.2202croute&umptoutsumptuiveutcument,2CRUMEATS; IN = 8184954018)[1] => simperxmlelement对象([描述] =>告诉朋友[url] => amazon.in/gp/pdp/taf/8184954018?subscriptionID = akiaj5b7eph4tj6yeuq = akiaj5b7eph4tj6yeuq = tag;创意= 165953& creativeasin = 8184954018)[2] => simplexmlelement对象([描述] =>所有客户评论[url] => amazon.in/review/product/8184954018?linkCode = xm2& camp = 2025& creative = 165953&creatp; creativeasin = 8184954018)[3] => simperxmlement object([ull] => alling [url] => amazon.in/gp/gp/ffer-listing/81849549540018?akiaj5b7eph4tj6yeuuq&amp = 30061200-21& linkCode = xm2& camp = 2025& creative = 165953&creativeasin = 8184954018))制造商] => jaico出版社[ProductGroup] => book [title] => Chanakya的7个领导秘密)

[1] => simperxmlelement对象([[ASIN] => b00ea0q3pw [lideespageurl] => amazon.in/improve-your-leadersion-management-skills-management-skills-ebook/dp/b00ea0q3pp/21& linkCode = xm2& camp = 2025& creative = 165953& creativeasin = b00ea0q3pw [itemlinks] => simplexmlemletm object([itemLink] => array => array([0] => simplexmlelement => simplexmlelement object([0] => simperxmlelemt object)] => amazon.in/gp/registry/wishlist/add-item.html?asin.0 = b00ea0ea0q3pw&subscriptionId = akiaj5b7epl4tj6yeuuq&am = B00EA0Q3PW)[1] => simplexmlelement对象([描述] =>告诉朋友[url] => amazon.in/gp/pdp/pdp/taf/b00ea0ea0ea0ea0q3pw?subscriptionID=AKIAJ5B7EPH4TJ6YEUUQ&amp = tag2025&创意= 165953& creativeasin = b00ea0q3pw)[2] => simplexmlemlement对象([描述] =>所有客户评论[url] => www.amazon.in/review/review/review/reoduct/product/product/product/b00ea0eea0eea0eea0eea0q3pw?-21& linkCode = xm2& camp = 2025& creative = 165953& creativeasin = b00ea0q3pw)[3] => simplexmlelement object([描述]订阅= akiaj5b7eph4tj6yeuuq& tag = 30061200-21& linkCode = xm2& camp = 2025& creative = 165953& amp; amp; amp; amp; amp; creativeasin = b00ea0q3pw)) AZ发布[ProductGroup] =>电子书[title] =>如何提高您的领导和管理技能 - 业务经理的有效策略)

我需要什么帮助:从上面的两个数组元素中,哪个php代码将我的输出表带有以下列

  • asin
  • 标题
  • 作者
  • 详细信息URL
  • 客户评论URL

可以通过使用domdocument而不是使用单纯词来轻松处理所需的基础。默认命名空间(tockenearchResponse元素中的XMLNS定义)使Simplexml并不那么简单。

但作为开始,以下代码应该有所帮助...

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$file = file_get_contents("t1.xml");
$xml = new DOMDocument();
$xml->loadXML($file);
$items = $xml->getElementsByTagName("Items")[0];
foreach ( $items->getElementsByTagName("Item") as $item )    {
    echo "ASIN:".$item->getElementsByTagName("ASIN")[0]->nodeValue.PHP_EOL;
    echo "Author:".$item->getElementsByTagName("Author")[0]->nodeValue.PHP_EOL;
}

所有这些都是首先提取<items>元素,然后使用循环来获取每个<item>元素。在循环中,您可以看到它使用适当的名称提取单个元素数据。

当每个呼叫getElementsByTagName返回元素数组,这就是为什么您必须说只使用第一个元素(假设这是正确的,如果不是,则可以在它们上 foreach)。

最新更新