我需要创建一个Delphi Unit文件来处理XML文件,通常我使用“Delphi上的XML DATA Binding向导”和XSD文件,但在这种情况下我只有soap请求消息,如下所示:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ar="http://ar.gov.afip.dif.FEV1/">
<soapenv:Header/>
<soapenv:Body>
<ar:FECAESolicitar>
<ar:Auth>
<ar:Token>string</ar:Token>
<ar:Sign>string</ar:Sign>
<ar:Cuit>long</ar:Cuit>
</ar:Auth>........
有没有办法将其转换为xsd文件?
答案 0 :(得分:0)
信息有限的一个非常古老的问题,但无论如何......
从提供的xml生成xsd实际上是不可行的。但是,快速谷歌搜索告诉我,xmlns:ar="http://ar.gov.afip.dif.FEV1/">
的服务在https://servicios1.afip.gov.ar/wsfev1/service.asmx?WSDL处可以访问wsdl。
WSDL文件可以直接从IDE导入Delphi的WSDL Importer。 RIO实施可以完全处理与Web服务的通信。
如果由于某种原因你不想要SOAP-stuff,你可以从命令行使用(未记录/不支持的?)选项&#34; -schema&#34;来运行WSDL Importer。
C:\ home&gt; wsdlimp -schema service.wsdl Embarcadero WSDLIMP版本2.41 - $ Rev:90173 $ 版权所有(c)2010 Embarcadero Technologies,Inc。
Reading: service.wsdl
Import : service.wsdl>0
Done : service.wsdl>0
Writing: C:\home\service.pas
这也适用于普通的xsd文件。这样只处理类型。它看起来与XML数据绑定向导生成的代码完全不同,但我更喜欢这种格式。我猜是习惯的力量。
第三,如果你真的想使用XML数据绑定向导,你可以将wsdl中标签之间的东西复制到一个新的xsd中(因为在这种情况下,模式中提供了类型,除了从它们导入它们之外)一个xsd)。您可能必须修复一些命名空间映射,但之后您可以照常导入它。