XML:将几个子节点的值保存到 php 数组中 [英] XML: Save several child node's values into php array

查看:17
本文介绍了XML:将几个子节点的值保存到 php 数组中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何检索此 xml 的所有 <ASIN>..</ASIN> 值并将它们保存到 php 变量/数组?

How can I retrieve all <ASIN>..</ASIN> values of this xml and save them to a php variable/array?

我试过 $result=$xml->xpath('//ASIN'); 但这给了我 array(0) { } 作为浏览器输出.感谢您的帮助!非常感谢!

I tried $result=$xml->xpath('//ASIN'); but this gives me array(0) { } as a browser output. Thank you for your help! I appreciate it very much!

这是我的 xml 文件:

This is my xml file:

    <?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>

推荐答案

由于 Namespace,您无法直接执行 XPath 查询.在此处

Because of Namespace you're not able to execute XPath query directly. Read the full details solution here

我仍然在这里提供一些可以帮助您的代码.

Still I am providing here little bit code which can help you.

$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 元素的数组,如下所示

Now you will see array off ASIN element like below

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
        )

)

这篇关于XML:将几个子节点的值保存到 php 数组中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆