2012-11-27 58 views
0

如何檢索此xml的所有<ASIN>..</ASIN>值並將它們保存到php變量/數組中?XML:將幾個子節點的值保存到php數組中

我試過$result=$xml->xpath('//ASIN');但這給了我array(0) { }作爲瀏覽器輸出。 謝謝你的幫助!我非常感激!

這是我的xml文件:

<?xml version="1.0" ?> 
     <ItemLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01"> 
     <OperationRequest> 
     <RequestId>...</RequestId> 
     <Arguments> 
     <Argument Name="region" Value="de"></Argument> 
     <Argument Name="ItemId" Value="B007ZXLRVQ"></Argument> 
     <Argument Name="Operation" Value="ItemLookup"></Argument> 
     <Argument Name="Service" Value="AWSECommerceService"></Argument> 
     <Argument Name="AWSAccessKeyId" Value="...."></Argument> 
     <Argument Name="Timestamp" Value="2012-11-27T12:52:41Z"></Argument> 
     <Argument Name="Signature" Value="...."></Argument> 
     <Argument Name="ResponseGroup" Value="Similarities"></Argument> 
     <Argument Name="AssociateTag" Value="..."></Argument> 
     <Argument Name="Version" Value="2009-10-01"></Argument> 
    </Arguments> 
    <RequestProcessingTime>0.0216670000000000</RequestProcessingTime> 
    </OperationRequest> 
    <Items> 
     <Request> 
     <IsValid>True</IsValid> 
     <ItemLookupRequest> 
      <IdType>ASIN</IdType> 
      <ItemId>B007ZXLRVQ</ItemId> 
      <ResponseGroup>Similarities</ResponseGroup> 
      <VariationPage>All</VariationPage> 
     </ItemLookupRequest> 
     </Request> 
    <Item> 
     <ASIN>B007ZXLRVQ</ASIN> 
     <SimilarProducts><SimilarProduct><ASIN>B007Y6DS84</ASIN> 
     <Title>Brita 040 147 Starterpaket Marella Cool, weiß</Title> 
     </SimilarProduct> 
     <SimilarProduct> 
     <ASIN>B0018K7EMI</ASIN> 
     <Title>Trinkflasche 1,0 Liter für gefiltertes Wasser</Title> 
     </SimilarProduct> 
     <SimilarProduct> 
     <ASIN>B000QG7AJM</ASIN> 
     <Title>Brita Filterkartuschen Maxtra Pack 4 (lim. Edition)</Title> 
     </SimilarProduct> 
     <SimilarProduct> 
     <ASIN>B001T9N51M</ASIN> 
     <Title>Brita Filterkartuschen Maxtra Pack 12 (lim. Edition)</Title> 
     </SimilarProduct> 
     <SimilarProduct> 
     <ASIN>B001ET6CNU</ASIN> 
     <Title>wuta kamille 82158 Herbacin Handcreme + Glyzerin Dose 75 ml, Fünferpack</Title> 
    </SimilarProduct> 
    </SimilarProducts> 
    </Item> 
    </Items> 
</ItemLookupResponse> 

回答

0

因爲命名空間的你不能夠直接執行XPath查詢。閱讀完整的詳細信息解決方案here

我仍然在這裏提供一點點代碼,可以幫助你。

$asins = simplexml_load_file('asin.xml'); 
if(count($asins)): 
    //alternate way other than registring NameSpace 
    //$asin = $asins->xpath("//*[local-name() = 'ASIN']"); 

    $asins->registerXPathNamespace('prefix', 'http://webservices.amazon.com/AWSECommerceService/2011-08-01'); 
    $asin = $asins->xpath("//prefix:ASIN"); 
    echo "<pre>";print_r($asin); 
endif; 

現在你會看到數組off ASIN元素像下面

Array 
(
    [0] => SimpleXMLElement Object 
     (
      [0] => B007ZXLRVQ 
     ) 

    [1] => SimpleXMLElement Object 
     (
      [0] => B007Y6DS84 
     ) 

    [2] => SimpleXMLElement Object 
     (
      [0] => B0018K7EMI 
     ) 

    [3] => SimpleXMLElement Object 
     (
      [0] => B000QG7AJM 
     ) 

    [4] => SimpleXMLElement Object 
     (
      [0] => B001T9N51M 
     ) 

    [5] => SimpleXMLElement Object 
     (
      [0] => B001ET6CNU 
     ) 

)