douxuzui4590 2012-10-12 19:32
浏览 98
已采纳

SimpleXMLElement使用命名空间访问元素?

I have the following XML:

<ns1:getBannerLinksResponse xmlns:ns1="http://endpoint.website.com/">
    <ns1:return>
        <ns1:campaignID>0</ns1:campaignID>
        <ns1:categoryID>200230455</ns1:categoryID>
        <ns1:categoryName>Promotion</ns1:categoryName>
        <ns1:linkID>10001599</ns1:linkID>
        <ns1:linkName>KFL-20% off No Min</ns1:linkName>
        <ns1:mid>3071</ns1:mid>
        <ns1:nid>1</ns1:nid>
        <ns1:clickURL>
            http://someurl
        </ns1:clickURL>
        <ns1:endDate>Oct 15, 2012</ns1:endDate>
        <ns1:height>250</ns1:height>
        <ns1:iconURL>
            http://someurl
        </ns1:iconURL>
        <ns1:imgURL>
            http://someurl
        </ns1:imgURL>
        <ns1:landURL>
            http://someurl
        </ns1:landURL>
        <ns1:serverType>22</ns1:serverType>
        <ns1:showURL>
            http://someurl
        </ns1:showURL>
        <ns1:size>13</ns1:size>
        <ns1:startDate>Oct 14, 2012</ns1:startDate>
        <ns1:width>300</ns1:width>
    </ns1:return>
</ns1:getBannerLinksResponse>

I tried the following with no luck:

$data = new SimpleXMLElement($xml);
$data->registerXPathNamespace('ns1','http://endpoint.website.com/');
foreach($data->xpath('//ns1:return') as $banner)
{
  $banner->registerXPathNamespace('ns1','http://endpoint.website.com/');
  var_dump($banner);
}
  • 写回答

2条回答 默认 最新

  • doutuo4285 2012-10-12 19:42
    关注

    All you need is

    $data = new SimpleXMLElement($xml);
    $data->registerXPathNamespace('ns1','http://endpoint.websitecom/');
    $part = $data->xpath("//ns1:return");
    var_dump($part[0]->children("ns1",true));
    

    Output

    object(SimpleXMLElement)[3]
      public 'campaignID' => string '0' (length=1)
      public 'categoryID' => string '200230455' (length=9)
      public 'categoryName' => string 'Promotion' (length=9)
      public 'linkID' => string '10001599' (length=8)
      public 'linkName' => string 'KFL-20% off No Min' (length=18)
      public 'mid' => string '3071' (length=4)
      public 'nid' => string '1' (length=1)
      public 'clickURL' => string '
                http://someurl
            ' (length=36)
      public 'endDate' => string 'Oct 15, 2012' (length=12)
      public 'height' => string '250' (length=3)
      public 'iconURL' => string '
                http://someurl
            ' (length=36)
      public 'imgURL' => string '
                http://someurl
            ' (length=36)
      public 'landURL' => string '
                http://someurl
            ' (length=36)
      public 'serverType' => string '22' (length=2)
      public 'showURL' => string '
                http://someurl
            ' (length=36)
      public 'size' => string '13' (length=2)
      public 'startDate' => string 'Oct 14, 2012' (length=12)
      public 'width' => string '300' (length=3)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路