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

文章目录

  • [第四十五章 在 SOAP 消息中使用数据集 - 以 XML 形式查看数据集和架构](#第四十五章 在 SOAP 消息中使用数据集 - 以 XML 形式查看数据集和架构)
  • [以 XML 形式查看数据集和架构](#以 XML 形式查看数据集和架构)
  • [对 `WSDL` 的影响](#对 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> 部分内):

xml 复制代码
<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 包括以下内容:

xml 复制代码
<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 的命令行工具。此技术可以提供足够的信息来生成客户端。

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

相关推荐
skywalk81632 分钟前
根据言律的语法,能否用racket进行开发呢?主要探讨是否可行。 racket在这里:E:\Program Files\Racket\Racket.exe
开发语言·原型模式
达达爱吃肉3 分钟前
claude 接入deepseek 运行报错
java·服务器·前端
OctShop大型商城源码3 分钟前
OctShop对比JAVA商城源码_OctShop大型专业级多用户商城源码
java·开发语言·商城系统·小程序商城·octshop
l1t3 分钟前
DeepSeek总结的使用实体-组件-系统和基于存在性处理进行Python编程15-17
开发语言·数据库·python
guslegend6 分钟前
AGENT.md,Skill与工程规范
java·开发语言·数据库
jingling5559 分钟前
Flutter | Dio网络请求实战
android·开发语言·前端·flutter
周末也要写八哥10 分钟前
C++中单线程方式之无脑上锁
java·开发语言·c++
向上的车轮13 分钟前
Next.js 入门指南:从零到一构建全栈应用
开发语言·javascript·ecmascript
freeinlife'15 分钟前
精准秒表计时器实现---基于js
开发语言·前端·javascript
Reisentyan17 分钟前
[Advance]GoLang Learn Data Day 4
java·数据库·golang