3

我有一个定义如下的 WSDL。不确定定义有什么问题,但每次我尝试导入时,我都会收到错误

    <definitions targetNamespace="myservices" 
      xmlns:nslt2="myxsdspace"
      xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
      xmlns="http://schemas.xmlsoap.org/wsdl/" 
      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
      xmlns:tns="urn:myservices" 
      xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
      xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/">
  <types>
    <schema elementFormDefault="unqualified" 
    targetNamespace="myservices" xmlns="http://www.w3.org/2001/XMLSchema"/>
      <xsd:schema>
        <xsd:import namespace="myxsdspace" schemaLocation="ApplicaitonForm_Latest.xsd"/>
      </xsd:schema>
  </types>
  <message name="processRequest">

…………

我收到以下错误,但无法找到解决方案。

SOAP-ERROR: Parsing Schema: can't import schema from 'myxsd.xsd', unexpected 'targetNamespace'='myxsdspace

非常感谢您的帮助

4

3 回答 3

2

给有同样烦恼的人的答案,

它通常与属性之间的不匹配有关: namespace<import>标签和导入的 xsd 文件中targetNamespace的标签。schema

引发unexpected 'targetNamespace'错误的不匹配属性示例:

文件 wsdl.xml

<xs:import namespace="http://www.example.fr/modules/payment/schema/qwerty"
                   schemaLocation="location.xsd"/>

文件位置.xsd

<xs:schema targetNamespace="http://www.example.fr/modules/payment/schema/azerty" ... >

因此,只需更正其中一个属性,错误就会消失:

文件 wsdl.xml

<xs:import namespace="http://www.example.fr/modules/payment/schema/qwerty"
                   schemaLocation="location.xsd"/>

文件位置.xsd

<xs:schema targetNamespace="http://www.example.fr/modules/payment/schema/qwerty" ... >
于 2014-02-14T10:47:42.763 回答
1

您使用的是什么版本的 PHP?您可以发布连接到 SOAP 的代码吗?PHP-SOAP 接口仍然非常挑剔,您可能需要对您的 WSDL 或 PHP 进行一些修改才能使其满意。对于初学者,请尝试设置肥皂选项以强制使用肥皂版本。此外,请查看是否可以通过var_dump对错误运行 a 来获取更多详细信息,如下所示。

$soapServer = 'http://yoursoap.com/wsdl';
$soapOptions = array(
        'soap_version'    => SOAP_1_1,
        'exceptions'      => true,
        'trace'           => 1,
        'wsdl_local_copy' => true,
        'keep_alive'      => true,
        'features'        => SOAP_SINGLE_ELEMENT_ARRAYS
        );

try
{
    $soapClient = new SoapClient($soapServer, $soapOptions);
}
catch (Exception $e)
{
    $message = "<h2>Connection Error!</h2></b>";
    var_dump($e);
}
于 2012-10-11T19:30:24.427 回答
0

您提交的 WSDL 不完整。根元素没有关闭,还有其他不完整的元素。您将无法解析语法不规范的 WSDL

于 2012-10-11T19:27:17.047 回答