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

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

相关推荐
要开心吖ZSH23 分钟前
《Spring 中上下文传递的那些事儿》Part 4:分布式链路追踪 —— Sleuth + Zipkin 实践
java·分布式·spring
桦说编程42 分钟前
深入解析CompletableFuture源码实现
java·性能优化·源码
傻啦嘿哟44 分钟前
Python 办公实战:用 python-docx 自动生成 Word 文档
开发语言·c#
翻滚吧键盘1 小时前
js代码09
开发语言·javascript·ecmascript
q567315231 小时前
R语言初学者爬虫简单模板
开发语言·爬虫·r语言·iphone
蓝澈11211 小时前
迪杰斯特拉算法之解决单源最短路径问题
java·数据结构
Kali_071 小时前
使用 Mathematical_Expression 从零开始实现数学题目的作答小游戏【可复制代码】
java·人工智能·免费
rzl022 小时前
java web5(黑马)
java·开发语言·前端
时序数据说2 小时前
为什么时序数据库IoTDB选择Java作为开发语言
java·大数据·开发语言·数据库·物联网·时序数据库·iotdb
jingling5552 小时前
面试版-前端开发核心知识
开发语言·前端·javascript·vue.js·面试·前端框架