Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 将wsdl文件导入xsd文件_Xml_Soap_Xsd_Wsdl - Fatal编程技术网

Xml 将wsdl文件导入xsd文件

Xml 将wsdl文件导入xsd文件,xml,soap,xsd,wsdl,Xml,Soap,Xsd,Wsdl,我想通过使用xsd从soap xml生成类。到目前为止,我已经取得了成功,但现在,我收到了以下soap消息: <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:tds="http://www.onvif.org/ver10/device/wsdl"> <S

我想通过使用xsd从soap xml生成类。到目前为止,我已经取得了成功,但现在,我收到了以下soap消息:

<?xml version="1.0" encoding="UTF-8"?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" 
    xmlns:tds="http://www.onvif.org/ver10/device/wsdl"> 
    <SOAP-ENV:Body> 
        <tds:GetSystemDateAndTime/> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope>

xsd将生成以下内容:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Envelope" targetNamespace="http://www.w3.org/2003/05/soap-envelope"
xmlns:mstns="http://www.w3.org/2003/05/soap-envelope"
xmlns="http://www.w3.org/2003/05/soap-envelope"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified"
xmlns:app1="http://www.onvif.org/ver10/device/wsdl">
    <xs:import namespace="http://www.onvif.org/ver10/device/wsdl" schemaLocation="GetSystemDateAndTime_app1.xsd" />
    <xs:element name="Envelope" msdata:IsDataSet="true" msdata:Locale="en-US" msdata:Prefix="SOAP-ENV">
        <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element name="Body" msdata:Prefix="SOAP-ENV">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element ref="app1:GetSystemDateAndTime" minOccurs="0" />
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:choice>
        </xs:complexType>
    </xs:element>
</xs:schema>

此xmlns:tds=”http://www.onvif.org/ver10/device/wsdl“链接已打开


正如我所说的,到目前为止,我只是下载了这个文件,它位于schemaLocation属性中,将它放在和xsd文件相同的文件夹中,并更改了路径。然后我使用了“xsd myXsdFile.xsd otherXsdFiles.xsd/c”。但对于wsdl文件,这是不可能的。SchemaLocation属性不接受wsdl文件,当然,当我使用xsd commnand时,我将收到GetSystemDateAndTime不存在的消息。我知道wsdl文件和xsd有很大的不同,但我不能采取正确的方法,如何将这个文件与我的xsd文件连接起来。有什么建议吗?Thx

按照我的理解,重新表述您的问题,您基本上是在问如何让生成的XSD文件指向
app1:GetSystemDateAndTime
元素的真实定义,而不是
GetSystemDateAndTime_app1.XSD
;问题是app1:GetSystemDateAndTime的定义在位于的WSDL文件中的元素中

如果您将选项仅限于生成的XSD和下载的WSDL,那么简短的回答是否,您不能在WSDL文件中定义来自另一个XSD的XSD引用内容

不清楚为什么不使用内置的VS工具(如果您使用的是旧版本,则使用服务引用或Web引用)或svcutil.exe来生成客户端代码。从SOAP信封XML反向绑定XSD中的代码是非常罕见的。尽管如此,SOAP毕竟还是有可能使用XML;我只是以前从没见过

如果您仍然想“加入”,并且愿意进行一些手动更改,那么您可以通过两种方式进行

要下载所有文件(WSDL+XSD),还有很长的路要走。在命令提示符下,您可以像这样使用svcutil:

svcutil /t:metadata /directory:d:\temp\11 http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl
Microsoft (R) Service Model Metadata Tool
[Microsoft (R) Windows (R) Communication Foundation, Version 4.0.30319.1]
Copyright (c) Microsoft Corporation.  All rights reserved.

Attempting to download metadata from 'http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl' using WS-Metadata Exchange or DISCO.
Saving downloaded metadata files...
d:\temp\11\www.onvif.org.ver10.schema.xsd
d:\temp\11\www.w3.org.2004.08.xop.include.xsd
d:\temp\11\www.w3.org.XML.1998.namespace.xsd
d:\temp\11\www.onvif.org.ver10.device.wsdl
d:\temp\11\www.w3.org.2005.08.addressing.xsd
d:\temp\11\docs.oasis-open.org.wsrf.bf-2.xsd
d:\temp\11\www.w3.org.2005.05.xmlmime.xsd
d:\temp\11\docs.oasis-open.org.wsn.t-1.xsd
d:\temp\11\docs.oasis-open.org.wsn.b-2.xsd
它的输出如下:

svcutil /t:metadata /directory:d:\temp\11 http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl
Microsoft (R) Service Model Metadata Tool
[Microsoft (R) Windows (R) Communication Foundation, Version 4.0.30319.1]
Copyright (c) Microsoft Corporation.  All rights reserved.

Attempting to download metadata from 'http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl' using WS-Metadata Exchange or DISCO.
Saving downloaded metadata files...
d:\temp\11\www.onvif.org.ver10.schema.xsd
d:\temp\11\www.w3.org.2004.08.xop.include.xsd
d:\temp\11\www.w3.org.XML.1998.namespace.xsd
d:\temp\11\www.onvif.org.ver10.device.wsdl
d:\temp\11\www.w3.org.2005.08.addressing.xsd
d:\temp\11\docs.oasis-open.org.wsrf.bf-2.xsd
d:\temp\11\www.w3.org.2005.05.xmlmime.xsd
d:\temp\11\docs.oasis-open.org.wsn.t-1.xsd
d:\temp\11\docs.oasis-open.org.wsn.b-2.xsd
从WSDL文件中,手动将XSD内容从同一文件夹中的文件devicemgmtwsdl.XSD中剥离出来;编辑并匹配所有文件中的导入,以匹配下载的XSD文件名。参考devicemgmt.wsdl而不是GetSystemDateAndTime_app1.xsd,就可以开始了


或者,使用XSD重构工具,您可以使用一个简单的导入XML模式文件向导:将其指向WSDL文件,指定一个文件夹,然后单击OK。这些文件将在那里供您随意引用。

Thx,以供回复。这是我的错误。我不得不写下这样的话:“xsd GetSystemDateAndTime.xsd GetSystemDateAndTime_app1.xsd/c”。我不知道,我在哪里发现我必须将schemaLocation属性更改为generating类。我愚蠢的错误。