php - 在 PHP 中使用命名空间解析 SOAP 响应

标签 php soap xml-parsing simplexml xml-namespaces

<分区>

关于如何解析此 SOAP 响应并获取 report_typename 值的任何建议?注意有两个名称实例;一个在 report_type 下,另一个在 severity 下。

这是 SOAP 响应

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <ns1:getIRResponse xmlns:ns1="http://ws.icontent.idefense.com/V3/2">
         <ns1:return xsi:type="ns1:IRResponse" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <ns1:report_type>
               <ns1:id>0</ns1:id>
               <ns1:name>Original Vulnerability</ns1:name>
            </ns1:report_type>
            <ns1:severity>
                <ns1:id>0</ns1:id>
                <ns1:name>HIGH</ns1:name>
            </ns1:severity>
         </ns:return>
      </ns1:getIRResponse>
   </soapenv:Body>
</soapenv:Envelope>

这是我正在使用的 PHP 代码:

<?php        
    $xml = simplexml_load_string($response);    
    $xml->registerXPathNamespace('ns1', 'http://ws.icontent.idefense.com/V3/2');

    foreach ($xml->xpath('//ns1:report_type/name') as $item)
    {
        echo 'Name: '.$item,'<br>';               
    } 
?>

PHP 代码没有回显任何内容。当我使用 ($xml->xpath('//ns1:name') as $item) 它返回两个名称(原始漏洞和 HIGH)。

我知道我错过了一些愚蠢的东西。你能帮忙吗?提前致谢!

最佳答案

首先,我已经更正了这个元素

</ns:return>

并将其更改为

</ns1:return>

我似乎通过在两个 xpath 段中复制命名空间前缀得到了你想要的结果

$xml = simplexml_load_string($response);    
$xml->registerXPathNamespace('ns1','http://ws.icontent.idefense.com/V3/2');
foreach ($xml->xpath('//ns1:report_type/ns1:name') as $item)
{
  echo 'Name: '.$item,'<br>';
}            

输出

Name: Original Vulnerability

关于php - 在 PHP 中使用命名空间解析 SOAP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13462761/

相关文章:

php - 如何在wordpress中连接多个表获取数据

web-services - Web 服务调用导致 System.Xml.XmlException : '.' , 十六进制值 0x00

php - API 导致解析 WSDL : Couldn't load from

WCF 身份验证策略

iphone - 使用 TouchXML 的 ASIHTTPRequest 示例

php - Laravel - 返回 SSH 输出

php - 案例, "document.ready"阻塞时

python - 如何获取 BeautifulSoup 中所有父标签的列表?

java - java从xml中提取字符串

php - hasManyThrough 用于 3 个表