第四十五章 在 SOAP 消息中使用数据集 - 以 XML 形式查看数据集和架构

文章目录

  • 第四十五章 在 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 的命令行工具。此技术可以提供足够的信息来生成客户端。

然而,在所有情况下,都需要进行大量工作来编写代码,以便客户端可以解释或生成适当形式的消息。

上一篇:spring-关于组件的注入及获取流程


下一篇:机车自动换档系统的单片机设计方案