XML: сохранение нескольких значений дочернего узла в php-массив

Как я могу получить все значения <ASIN>..</ASIN> этого 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> продукты  <?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> продукты  <?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> 

Из-за пространства имен вы не можете напрямую выполнить запрос XPath. Ознакомьтесь с полным решением этой проблемы.

Тем не менее я предоставляю здесь небольшой код, который может вам помочь.

 $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; 

Теперь вы увидите массив с элементом 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 ) )