首页 文章

如何使用SimpleXML和PHP钻入SOAP命名空间[重复]

提问于
浏览
0

这个问题在这里已有答案:

所有,

我试图在SOAP响应中访问元素ebl:RequesterCredentials但到目前为止没有成功 . 我正在使用PHP SimpleXML . 对我来说问题至少是注册ebl命名空间 - 我在响应中得到的是:

的xmlns =”瓮:易趣:的API:eBLBaseComponents”

我试过这个:

$r =     $xml->registerXPathNamespace("ebl","urn:ebay:apis:eBLBaseComponents");
foreach($xml->xpath('ebl:RequesterCredentials') as $e){
$sig = (string) $e->NotificationSignature;

}

该元素嵌套如下:

soapenv:Envelope - > soapenv:Header - > ebl:RequesterCredentials - > ebl:NotificationSignature

<soapenv:Envelope xmlns:soapenv =“http://schemas.xmlsoap.org/soap/envelope/”xmlns:xsd =“http://www.w3.org/2001/XMLSchema”xmlns:xsi =“http: //www.w3.org/2001/XMLSchema-instance“> <soapenv:Header> <ebl:RequesterCredentials xmlns:ns =”urn:ebay:apis:eBLBaseComponents“xmlns:ebl =”urn:ebay:apis:eBLBaseComponents“ soapenv:mustUnderstand =“0”> <ebl:NotificationSignature xmlns:ebl =“urn:ebay:apis:eBLBaseComponents”> 9hJXr9QTtck33I / 4wg135A == </ ebl:NotificationSignature> </ ebl:RequesterCredentials> </ soapenv:Header> < soapenv:Body> <GetMemberMessagesResponse xmlns =“urn:ebay:apis:eBLBaseComponents”> <Message> FOO </ Message> <Timestamp> 2007-09-14T17:07:41.984Z </ Timestamp> </ GetMemberMessagesResponse> </ soapenv :Body> </ soapenv:Envelope>

有关如何访问此元素的任何想法?

1 回答

  • 0

    在几次不同的尝试访问元素值之后,这给了我所需要的东西,虽然它可能太冗长了 .

    $xml = simplexml_load_string(...);
    $sig = (string) $xml->children('http://schemas.xmlsoap.org/soap/envelope/')->children('urn:ebay:apis:eBLBaseComponents')->RequesterCredentials->NotificationSignature;
    

相关问题