美文网首页
第四十四章 在 SOAP 消息中使用数据集 - 控制数据集格式

第四十四章 在 SOAP 消息中使用数据集 - 控制数据集格式

作者: Cache技术分享 | 来源:发表于2024-06-30 08:09 被阅读0次

第四十四章 在 SOAP 消息中使用数据集 - 控制数据集格式

控制数据集格式

默认情况下,数据集以 Microsoft DiffGram 格式编写,并在其前面加上 XML 架构。以下显示了一个示例:

<SOAP-ENV:Body>
  <Get0Response xmlns="https://www.myapp.org">
    <Get0Result>
    <s:schema id="DefaultDataSet" xmlns="" 
    attributeFormDefault="qualified" 
    elementFormDefault="qualified"
    xmlns:s="https://www.w3.org/2001/XMLSchema" 
    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
      <s:element name="DefaultDataSet" msdata:IsDataSet="true">
        <s:complexType>
          <s:choice maxOccurs="unbounded">
            <s:element name="GetPeople">
              <s:complexType>
                <s:sequence>
                  <s:element name="Name" type="s:string" minOccurs="0" />
                  <s:element name="DOB" type="s:date" minOccurs="0" />
                </s:sequence>
              </s:complexType>
            </s:element>
          </s:choice>
        </s:complexType>
      </s:element>
    </s:schema>

    <diffgr:diffgram 
    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" 
    xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
      <DefaultDataSet xmlns="">
        <GetPeople diffgr:id="GetPeople1" msdata:rowOrder="0">
          <Name>Quine,Howard Z.</Name>
          <DOB>1965-11-29</DOB>
        </GetPeople>
...
      </DefaultDataSet>
    </diffgr:diffgram>
   </Get0Result>
 </Get0Response>  
</SOAP-ENV:Body>

%XML.DataSet 类提供以下选项来控制此格式:

  • DATAONLY 参数和 DiffGram 属性控制输出是否为 DiffGram 格式。默认情况下,输出为 DiffGram 格式,如上所示。如果将 %XML.DataSet 子类化并将 DATAONLY 设置为 1,或者将 DiffGram 设置为 0,则输出将不是 DiffGram 格式。XML 数据集的主体如下所示:
<SOAP-ENV:Body>
  <Get0Response xmlns="https://www.myapp.org">
    <Get0Result>
      <GetPeople xmlns="">
        <Name>Quine,Howard Z.</Name>
        <DOB>1965-11-29</DOB>
      </GetPeople>
      <GetPeople xmlns="">
...
    </Get0Result>
  </Get0Response>  
</SOAP-ENV:Body>

DiffGram 格式相比,请注意默认情况下不输出架构,并且输出不包含 <diffgram> 元素。

  • NeedSchema 属性控制输出是否包含 XML 架构。如果使用 DiffGram 格式,则默认输出架构;如果不使用 DiffGram 格式,则默认不输出架构。要强制输出架构,请将 NeedSchema 设置为 1;要禁止输出架构,请将其设置为 0
  • 如果使用 DiffGram 格式,则 WriteEmptyDiffgram 属性在数据集没有行的情况下控制 <diffgram> 元素的内容。默认情况下(或者如果 WriteEmptyDiffgram 等于 0),<diffgram> 元素包含一个空元素,如下所示:
...
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" 
xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
   <DefaultDataSet xmlns="">
   </DefaultDataSet>
</diffgr:diffgram>
...

相反,如果 WriteEmptyDiffgram 等于1,则 <diffgram> 元素不包含任何内容:

...
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" 
</diffgr:diffgram>
...

如果没有使用 DiffGram 格式,则此属性无效。

  • 如果使用 DiffGram 格式,DataSetName 属性将控制 <diffgram> 元素中元素的名称。默认情况下,此元素名为 <DefaultDataSet>,如上例所示。如果未使用 DiffGram 格式,则此属性无效。

%XML.DataSet 还提供了 CaseSensitive 属性,该属性与同名的 Microsoft 数据集属性相对应。出于兼容性原因,默认值为 false

相关文章

网友评论

      本文标题:第四十四章 在 SOAP 消息中使用数据集 - 控制数据集格式

      本文链接:https://www.haomeiwen.com/subject/igqpcjtx.html