第四十四章 在 SOAP 消息中使用数据集 - 控制数据集格式
2024-06-30 本文已影响0人
Cache技术分享
第四十四章 在 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
。