繁体   English   中英

无法从具有名称空间的XML获取数据

[英]Can't get data from XML with namespaces

我提出了一个肥皂请求,并得到以下答复:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://*************/******/****" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://*************/******/****/***">
  <SOAP-ENV:Body>
    <ns1:GetEventV2Response>
      <ns1:GetEventV2Result>
       <ns1:Events>
         <ns1:Event>
           <ns1:Id>147624</ns1:Id>
           <ns1:Name>Rockstars</ns1:Name>
         <ns1:Genre>
         ...

我试图在<ns1:Event>内获取元素ID,但是下面的代码不起作用,也不知道为什么。 我搜索并尝试了一些解决方案,但没有成功。

header("Content-type: text/xml");
  ....
  $response = curl_exec($ch);
  curl_close($ch);
  x = new SimpleXmlElement($response);
  foreach($x->xpath('//ns1:Event') as $event) {
      var_export($event->xpath('ns1:Id'));
  }

使用SimpleXMLElement :: registerXPathNamespace注册名称空间。 例如:

$x->registerXPathNamespace('ns1', 'http://*************/******/****');

然后:

$event->registerXPathNamespace('ns1', 'http://*************/******/****');

你为什么不试试这个?

$xml = simplexml_load_string($xml);
$xml->registerXPathNamespace('soap', 'http://schemas.xmlsoap.org/soap/envelope/');
foreach ($xml->xpath('//ns1:Event') as $item)
{
    print_r($item);
}

http://php.net/manual/zh/function.simplexml-load-string.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM