0

我试图从一个属性中获取一个值并在一个数组中使用它来将它插入到 MySQL 表中。我的 XML 文件是:

    <?xml version="1.0"?>
<GetMatchingProductForIdResponse xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01">
<GetMatchingProductForIdResult Id="9780596515898" IdType="ISBN" status="Success">
<Products xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01" xmlns:ns2="http://mws.amazonservices.com/schema/Products/2011-10-01/default.xsd">
<Product>
  <Identifiers>
    <MarketplaceASIN>
      <MarketplaceId>ATVPDKIKX0DER</MarketplaceId>
      <ASIN>B0026OR39Y</ASIN>
    </MarketplaceASIN>
  </Identifiers>

并使用 php 我需要在 GetMatchingProductForIdResult 中提取 Id 的值。到目前为止,我的代码是这样的:

    $parsed_xml = ProductId_xml($isbn);
    $isbn13 =(string)$parsed_xml->GetMatchingProductProductForIdResult[0]->attributes();
echo $isbn13['Id']; die;

即使我将它更改为 print_r 或 var_dump,我也没有从 echo 语句中得到任何结果。我也试过:

    $amazonResult = array(
                            'isbn' => $parsed_xml->GetMatchingProductProductForIdResult[0]['Id'],

这也没有产生任何结果。我不知道从这里去哪里,任何帮助将不胜感激。

编辑:为了澄清这一点,每条记录的 Id 值都会改变。那么这次的“9780596515898”可能是下一条记录的Id="9780596312674"。我需要知道每一个是什么,这样我就可以将它们与我需要的其他信息一起插入到数据库中。

4

1 回答 1

1

如果我关闭 XML,我可以访问属性 - 否则它所做的只是抛出错误。您可以访问所有属性,也可以通过 simplexml 单独访问:

$str = <<<XML
<?xml version="1.0"?>
<GetMatchingProductForIdResponse xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01">
<GetMatchingProductForIdResult Id="9780596515898" IdType="ISBN" status="Success">
<Products xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01" xmlns:ns2="http://mws.amazonservices.com/schema/Products/2011-10-01/default.xsd">
<Product>
  <Identifiers>
    <MarketplaceASIN>
      <MarketplaceId>ATVPDKIKX0DER</MarketplaceId>
      <ASIN>B0026OR39Y</ASIN>
    </MarketplaceASIN>
  </Identifiers>
</Product>
</Products>
</GetMatchingProductForIdResult>
</GetMatchingProductForIdResponse>
XML;


$xml = simplexml_load_string($str);

foreach($xml->GetMatchingProductForIdResult->attributes() as $a => $b) {
    echo $a,'="',$b,"\"\n";
}

// Or access them directly:

echo $xml->GetMatchingProductForIdResult->attributes()->Id;

输出:

Id="9780596515898" IdType="ISBN" status="Success" 9780596515898
于 2012-10-09T14:57:03.497 回答