文章目录
- 第四十五章 在 SOAP 消息中使用数据集 - 以 XML 形式查看数据集和架构
- 以 XML 形式查看数据集和架构
- 对 `WSDL` 的影响
第四十五章 在 SOAP 消息中使用数据集 - 以 XML 形式查看数据集和架构
以 XML 形式查看数据集和架构
扩展 %XML.DataSet
的数据集在具有可用于生成 XML
的实用方法。所有这些方法都会写入当前设备:
-
WriteXML()
将数据集写入XML
,可选择在XML
架构前加上前缀。此方法具有可选参数,用于控制*元素的名称、命名空间的使用、空值处理等。默认情况下,此方法会考虑数据集的格式,如上一节中的设置所指定。您可以通过提供可选参数的值来覆盖该结果,这些参数控制输出是否为DiffGram
格式等。有关详细信息,请参阅%XML.DataSet
的类文档。 -
XMLExport()
为数据集写入XML
模式,然后将数据集作为XML
格式。 -
WriteSchema()
仅为数据集写入XML
模式。 -
XMLSchema()
写入其数据集类的Microsoft
专有XML
表示形式。
对 WSDL
的影响
如果 Web
服务在使用 %XML.DataSet
作为 Web
方法的输入或输出,则会影响 WSDL
,从而导致 IRIS
和 .NET
以外的客户端难以使用 WSDL
。
对于类型化数据集,WSDL
包括以下元素(在 <types>
部分内):
<s:element name="GetDataSetByNameResponse">
<s:complexType>
<s:sequence>
<s:element name="GetDataSetByNameResult" type="s0:ByNameDataSet" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="ByNameDataSet">
<s:sequence>
<s:any namespace="https://tempuri.org/ByNameDataSet" />
</s:sequence>
</s:complexType>
对于非类型化数据集,WSDL
包括以下内容:
<s:element name="GetByNameResponse">
<s:complexType>
<s:sequence>
<s:element name="GetByNameResult" type="s0:DataSet" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="DataSet">
<s:sequence>
<s:element ref="s:schema" />
<s:any />
</s:sequence>
</s:complexType>
在后一种情况下,如果尝试在 IRIS
或 .NET
以外的工具中生成 Web
客户端,则会发生错误,因为该工具的信息不足。对于 Metro
,可以在尝试使用 WSDL
之前加载其他架构信息。为此,可以使用名为 wsimport
的命令行工具。此技术可以提供足够的信息来生成客户端。
然而,在所有情况下,都需要进行大量工作来编写代码,以便客户端可以解释或生成适当形式的消息。