文章目录
- 第四十四章 在 SOAP 消息中使用数据集 - 控制数据集格式
- 控制数据集格式
第四十四章 在 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
。