3

我有一个非常简单的 SOAP XML,它是从基于 WSDL 的 Web 服务接收的,作为对 SOAP 请求的响应:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <PingResponse xmlns="http://somevalidnamespacedomain.org/xyz">
         <PingResult>Pinging Back</PingResult>
      </PingResponse>
   </soap:Body>
</soap:Envelope>

此 SOAP XML在(用于接收此消息的工具)中完美验证。soapUI也就是说,如果我右键单击soapUI 中的消息窗格并从上下文菜单中选择“验证”,它会显示“验证确定”。

在此处输入图像描述

但是,如果我将相同的确切消息复制并粘贴到Notepad++(或什至Altova's XMLSpy),然后尝试验证(指向正确的.xsd),我会收到一条不太清楚的错误消息:

使用 XML 模式验证当前文件:

错误:元素 '{ http://schemas.xmlsoap.org/soap/envelope/ }Envelope':没有可用于验证根的匹配全局声明。

为什么会这样?

为了使它在soapUI外部验证,我需要用什么包装(或修改)它?

4

2 回答 2

1

我猜在验证时,您将验证器指向具有肥皂主体定义但没有肥皂信封结构定义的模式文档。因此,您的验证已经在根元素上失败。

请注意(特别是)如果您告诉您的验证器使用某些特定的模式文件,它不知道,甚至对您的 XML 文档的用途不感兴趣。它只是检查语法并尝试验证整个文档(除非模式文档告诉跳过某些元素的内容)。

于 2014-01-19T02:00:00.740 回答
1

尝试在根元素中定义肥皂信封模式位置。有些像这样:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/ http://schemas.xmlsoap.org/soap/envelope/">
于 2015-10-15T09:41:15.150 回答