【问题标题】:XML: Save several child node's values into php arrayXML:将几个子节点的值保存到 php 数组中
【发布时间】:2012-11-15 02:46:57
【问题描述】:

如何检索此 xml 的所有 <ASIN>..</ASIN> 值并将它们保存到 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>

【问题讨论】:

    标签: php xml xpath xml-parsing


    【解决方案1】:

    由于命名空间,您无法直接执行 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;
    

    现在您将看到数组关闭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
            )
    
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-22
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      • 2018-06-01
      相关资源
      最近更新 更多