当我知道命名空间和请求名称时,我能够解析XML SOAP。
因为我有不同种类的SOAP请求,所以我想在SOAP文件中获得请求名。我肥皂的一部分的摘录:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://schema.example.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>
<SOAP-ENV:Body>
**<ns1:SendMailling>**
<campagne xsi:type="ns1:Campaign"><ActivateDedup xsi:nil="true"/><BillingCode xsi:nil="true"/><DeliveryFax xsi:type="ns1:DeliveryFax"/>
<DeliveryMail xsi:type="ns1:DeliveryMail">
...
PHP代码:
if(is_file($file))
{
$content=file_get_contents($file);
$xml = simplexml_load_string($content);
$xml->registerXPathNamespace('ns1', 'http://schema.example.com');
foreach ($xml->xpath('\\SOAP-ENV:') as $item)
{
//certainly the bad way?
echo "<pre>";
print_r($item);
echo "</pre>";
}
echo "<pre>";
print_r($xml);
echo "</pre>";
}
我没有得到任何结果…我想让它出现:“SendMailling”(识别请求名称)
当我特别指明
//foreach($xml->xpath('//ns1:SendMailling') as $item)
没有问题。
我尝试了< code > foreach($XML-
我很难理解你的问题,所以这可能不是答案。
如果我理解的没错,您希望选择所有元素节点,这些节点是<code>的直接子元素
您已经注册了要与 SimpleXMLElement::xpath
一起使用的命名空间前缀:
$xml->registerXPathNamespace('ns1', 'http://schema.example.com');
据我所知,您尚未注册 SOAP-ENV
/ http://schemas.xmlsoap.org/soap/envelope/
命名空间。
在XPath中,要匹配一个元素,可以指定它的名称空间。有多种方法可以做到这一点:
* All elements in any namespace.
prefix:* All elements in namespace "prefix" (registered prefix)
prefix:local Only "local" elements in namespace "prefix"
例如,要选择带有< code>ns1前缀的所有元素:
//ns1:*
您可能希望限制这一点,因为您只想要直接的孩子
/SOAP-ENV:Body/ns1:*
这应该包含您正在寻找的所有元素。
(OP:)再次感谢,当我做a
foreach ($xml->xpath('//SOAP-ENV:Body/ns1:*') as $item) {
echo $item->getName() . "<br>";
}
一切正常,我得到了请求名< code >“SendMailling”
。
问题内容: 我需要所有已登录的SOAP请求,以及持续时间(处理请求所花费的时间)。 最好的方法是什么?看起来可以为Spring WebServices配置log4j,但是它将记录所有值吗? 将以下行添加到log4j.xml 编辑:我们实际上是在使用,而不是。另外,看起来可以通过配置PayloadLoggingInterceptor来做到这一点 但是我不确定日志消息会去哪里。我将该拦截器添加到了我们
我试图向服务器发出POST请求,但我遇到了一个问题。服务器似乎收到了请求,但我仍然在控制台中看到一个错误,建议将主体从Object更改为JSON 错误:SyntaxError:JSON中位于JSON位置0处的意外标记A。在XMLHttpRequest处解析()。装载(http://localhost:4200/vendor.js:69142:51)text:“它是用id=:23保存的新用户”pro
我有一个4个测试套件的soap项目,每个测试套件都有一些测试用例,每个测试用例都有一些测试步骤[Soap请求,Groovy脚本]我能够使用下面提到的代码访问所有属性,但是,代码在本地系统中写入空白请求/响应文件** **请帮助解决这个问题,**
从这里的代码,我只想获得: 我尝试过使用JDT解析我代码,所以我的代码如下所示: 但不管用
我发送一个POST请求,从一家运输公司生成AWB。为了做到这一点,我必须通过SOAP API POST请求发布多个数据条目。下面的XML是类似的,这是必需的(我已经简化了,否则它要求超过30个参数) 我是SOAP新手,请帮助我朝着正确的方向前进,我甚至非常感谢上面的XML代码,因为它有助于更好地理解。
我正在使用API,我是PHP SOAP的新手。我正在尝试创建一个请求来获取车辆值,并希望获得响应值。 以下是示例SOAP 1.1请求。显示的占位符需要替换为实际值。 这是SOAP客户端URL调用- 这是我尝试过的,但没有结果- 我尝试了另一种方法,但在解析WSDL时出错 这是我得到的错误- SOAP-ERROR:解析WSDL:无法从'POST /vehicles/vehicle.asmxHTTP/