我试图从属性中获取一个值,并在数组中使用它将其插入到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”的下一条记录。我需要知道每个是什么,所以我可以使用我需要的其他信息将它们插入数据库。
答案 0 :(得分: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