共用方式為


WS_FIELD_MAPPING列舉 (webservices.h)

指定結構欄位在 XML 中的表示方式。 這是在 WS_FIELD_DESCRIPTION內使用。

Syntax

typedef enum {
  WS_TYPE_ATTRIBUTE_FIELD_MAPPING = 0,
  WS_ATTRIBUTE_FIELD_MAPPING = 1,
  WS_ELEMENT_FIELD_MAPPING = 2,
  WS_REPEATING_ELEMENT_FIELD_MAPPING = 3,
  WS_TEXT_FIELD_MAPPING = 4,
  WS_NO_FIELD_MAPPING = 5,
  WS_XML_ATTRIBUTE_FIELD_MAPPING = 6,
  WS_ELEMENT_CHOICE_FIELD_MAPPING = 7,
  WS_REPEATING_ELEMENT_CHOICE_FIELD_MAPPING = 8,
  WS_ANY_ELEMENT_FIELD_MAPPING = 9,
  WS_REPEATING_ANY_ELEMENT_FIELD_MAPPING = 10,
  WS_ANY_CONTENT_FIELD_MAPPING = 11,
  WS_ANY_ATTRIBUTES_FIELD_MAPPING = 12
} WS_FIELD_MAPPING;

常數

 
WS_TYPE_ATTRIBUTE_FIELD_MAPPING
值: 0
欄位會對應至 xml 類型屬性 (xsi:type) 。 此
只能與 WS_DESCRIPTION_TYPE搭配使用。



syntax<br><br>struct Base<br>{<br> WS_STRUCT_DESCRIPTION* type;<br><br> // ... base fields ...<br>};<br><br>struct Derived : Base<br>{<br> // ... derived fields ...<br>};<br><br>struct Struct<br>{<br> Base* field;<br>};<br><br>Derived derived;<br>derived.type = &amp;DerivedStructDescription;<br>Struct s;<br>s.field = &amp;derived;<br><br>&lt;Struct&gt;<br> &lt;field xsi:type='Derived'&gt;<br> // ... base fields ...<br> // ... derived fields ...<br> &lt;/field&gt;<br>&lt;/Struct&gt;<br><br>

此對應不支援指定 WS_DEFAULT_VALUE
WS_ATTRIBUTE_FIELD_MAPPING
值: 1
欄位會對應至單一屬性。


欄位的 localName/ns 會當做 XML 屬性名稱和命名空間使用。


除非指定,否則屬性必須出現在 XML 中。
如果指定 WS_FIELD_OPTIONAL ,則屬性
不需要出現在 XML 中。 如果為選擇性,則為非選擇性
現在,欄位會設定為 WS_DEFAULT_VALUE
如果未指定預設值,則為零。



syntax<br><br>struct Struct<br>{<br> int field;<br>};<br><br>Struct s;<br>s.field = 1;<br><br>&lt;Struct field='1'/&gt;<br><br>

若要捨棄 屬性,應該使用 WS_VOID_TYPE
在此情況下,結構中不需要欄位。
如需詳細資訊 ,請參閱WS_VOID_TYPE
WS_ELEMENT_FIELD_MAPPING
值: 2
欄位會對應至單一元素。


欄位的 localName/ns 會當做 XML 元素名稱和命名空間使用。


除非指定,否則元素必須出現在 XML 中。
如果指定 WS_FIELD_OPTIONAL ,則專案
不需要出現在 XML 中。 如果為選擇性,則為非選擇性
現在,欄位會設定為 WS_DEFAULT_VALUE
如果未指定預設值,則為零。



syntax<br><br>struct Struct<br>{<br> int field;<br>};<br><br>Struct s;<br>s.field = 1;<br><br>&lt;Struct&gt;<br> &lt;field&gt;1&lt;/field&gt;<br>&lt;/Struct&gt;<br><br>

若要捨棄 元素,應該使用 WS_VOID_TYPE
在此情況下,結構中不需要欄位。
如需詳細資訊 ,請參閱WS_VOID_TYPE
WS_REPEATING_ELEMENT_FIELD_MAPPING
值: 3
欄位會對應至一組重複的專案。


欄位的 localName/ns 會當做 XML 元素使用
要用於專案 (包裝函式專案的名稱和命名空間
這是重複專案) 的父代。 如果沒有包裝函式
需要元素,則 localName/ns 應該是 Null


如果已指定包裝函式專案,包裝函式元素必須出現
如果重複專案計數不是 0,則為 XML。 WS_DEFAULT_VALUE可能
未為此欄位對應指定。


itemLocalName 和 itemN 會當做 XML 元素使用
重複專案的名稱和命名空間。



syntax<br><br>struct Struct<br>{<br> int* field;<br> ULONG fieldCount;<br>};<br><br>int values[] = { 1, 2 };<br>Struct s;<br>s.field = values;<br>s.fieldCount = 2;<br><br>// with wrapper element specified<br>&lt;Struct&gt;<br> &lt;field&gt;<br> &lt;item&gt;1&lt;/item&gt;<br> &lt;item&gt;2&lt;/item&gt;<br> &lt;/field&gt;<br>&lt;/Struct&gt;<br><br>// with no wrapper element specified<br>&lt;Struct&gt;<br> &lt;item&gt;1&lt;/item&gt;<br> &lt;item&gt;2&lt;/item&gt;<br>&lt;/Struct&gt;<br>

還原序列化陣列中的元素數目可以受到限制
藉由指定非NullWS_ITEM_RANGE 結構
WS_FIELD_DESCRIPTION的一部分。
WS_TEXT_FIELD_MAPPING
值: 4
欄位會對應至專案的整個字元內容。
使用此對應時,不允許子項目。


此對應通常與WS_ATTRIBUTE_FIELD_MAPPING搭配使用,以定義結構,此結構會對應至包含某些文字和屬性 的專案 , (但否
子項目) 。



syntax<br><br>struct Struct<br>{<br> int field;<br>};<br><br>Struct s;<br>s.field = 1;<br><br>&lt;Struct&gt;1&lt;/Struct&gt;<br><br>

此對應不支援指定 WS_DEFAULT_VALUE
WS_NO_FIELD_MAPPING
值: 5
欄位不會序列化或還原序列化。


序列化時會忽略欄位,並且初始化為
還原序列化時的預設值。


如果欄位對應至其中一個現有類型 (,例如 WS_INT32_TYPE)
然後可以指定型別。 如果欄位的類型不是其中一個
現有的類型,然後 WS_VOID_TYPE 可用來指定
任意類型和大小的欄位。


可以指定 WS_DEFAULT_VALUE 以提供值
在還原序列化欄位時,將 欄位初始化為 。 如果預設值
未指定 value,則欄位會初始化為零。


欄位對應只能與 WS_FIELD_OPTIONS 值為 0 搭配使用。



syntax<br><br>struct Struct<br>{<br> int field;<br>};<br><br>Struct s;<br>s.field = 1;<br><br>&lt;Struct/&gt;<br><br>
WS_XML_ATTRIBUTE_FIELD_MAPPING
值: 6
欄位會對應至保留的 xml 屬性 (,例如 xml:lang) 。


欄位的 localName 是用來識別 XML 屬性名稱。


除非指定 WS_FIELD_OPTIONAL ,否則屬性必須
出現在 XML 中。 如果指定 WS_FIELD_OPTIONAL
則不需要屬性才會出現在 XML 中。 如果為選擇性,則為非選擇性
現在,欄位會設定為 WS_DEFAULT_VALUE
如果未指定預設值,則為零。



syntax<br><br>struct Struct<br>{<br> WS_STRING field;<br>};<br><br>Struct s;<br>s.field = ...; // 'us-en';<br><br>// Example of xml:lang<br>&lt;Struct xml:lang='us-en'/&gt;<br><br>s.field = ...; // 'true'<br><br>// Example of xml:space<br>&lt;Struct xml:space='true'&gt;<br>
WS_ELEMENT_CHOICE_FIELD_MAPPING
值: 7
欄位對應至一組可能的選項
位置。 每個元素都會對應至聯集的其中一個欄位。
等位的每個欄位都有對應的列舉值,也就是
用來識別目前的選擇。



syntax<br><br>// Enumeration of choices of different values<br>enum Choice<br>{<br> ChoiceA = 10,<br> ChoiceB = 20,<br> None = 0,<br>};<br><br>// Struct containing union of values, and enum 'selector'<br>struct Struct<br>{<br> Choice choice;<br> union<br> {<br> int a; // valid when choice is ChoiceA<br> WS_STRING b; // valid when choice is ChoiceB<br> } value;<br>}; <br><br>

此欄位對應必須與 WS_UNION_TYPE搭配使用。
專案選項的名稱和命名空間是在 中指定
WS_UNION_DESCRIPTION。 欄位的 localName
和 ns 應該是 Null


除非指定 WS_FIELD_OPTIONAL ,否則為其中一個
元素必須出現在 XML 中。 如果指定 WS_FIELD_OPTIONAL
然後,不需要任何元素才會出現在 XML 中。 如果為選擇性且無
元素存在,然後欄位的選取器值會設定為
列舉的無值 (,如 noneEnumValue 欄位所指定
WS_UNION_DESCRIPTION) 。 由於 nonEnumValue
做為預設值,此對應值不支援
指定 WS_DEFAULT_VALUE



syntax<br><br>Struct s;<br>s.choice = ChoiceA;<br>s.value.a = 123;<br><br>&lt;Struct&gt;<br> &lt;choiceA&gt;123&lt;/choiceA&gt;<br>&lt;/Struct&gt;<br><br>Struct S;<br>s.choice = ChoiceB;<br>s.value.b = ...; // 'hello'<br><br>&lt;Struct&gt;<br> &lt;choiceB&gt;hello&lt;/choiceB&gt;<br>&lt;/Struct&gt;<br><br>Struct S;<br>s.choice = None;<br><br>&lt;Struct&gt;<br>&lt;/Struct&gt; <br>

欄位對應至一組可能的選項
位置。 每個元素都會對應至聯集的其中一個欄位。
等位的每個欄位都有對應的列舉值,也就是
用來識別目前的選擇。



syntax<br><br>// Enumeration of choices of different values<br>enum Choice<br>{<br> ChoiceA = 10,<br> ChoiceB = 20,<br> None = 0,<br>};<br><br>// Struct containing union of values, and enum &amp;quot;selector&amp;quot;<br>struct Struct<br>{<br> Choice choice;<br> union<br> {<br> int a; // valid when choice is ChoiceA<br> WS_STRING b; // valid when choice is ChoiceB<br> } value;<br>};<br>

此欄位對應必須與 WS_UNION_TYPE搭配使用。
專案選項的名稱和命名空間是在 中指定
WS_UNION_DESCRIPTION。 欄位的 localName
和 ns 應該是 Null


除非指定 WS_FIELD_OPTIONAL ,否則為其中一個
元素必須出現在 XML 中。 如果指定 WS_FIELD_OPTIONAL
然後,不需要任何元素才會出現在 XML 中。 如果為選擇性且無
元素存在,然後欄位的選取器值會設定為
列舉的無值 (,如 noneEnumValue 欄位所指定
WS_UNION_DESCRIPTION) 。 由於 nonEnumValue
做為預設值,此對應值不支援
指定 WS_DEFAULT_VALUE



syntax<br><br>Struct s;<br>s.choice = ChoiceA;<br>s.value.a = 123;<br><br>&lt;Struct&gt;<br> &lt;choiceA&gt;123&lt;/choiceA&gt;<br>&lt;/Struct&gt;<br><br>Struct S;<br>s.choice = ChoiceB;<br>s.value.b = ...; // &amp;quot;hello&amp;quot;<br><br>&lt;Struct&gt;<br> &lt;choiceB&gt;hello&lt;/choiceB&gt;<br>&lt;/Struct&gt;<br><br>Struct S;<br>s.choice = None;<br><br>&lt;Struct&gt;<br>&lt;/Struct&gt;<br>

選取器值表示 的欄位
聯集已設定。 其他欄位在何時未初始化
值已還原序列化。 應用程式應該一律
請參閱選取器值,以確認 的欄位
等位可供存取。
WS_REPEATING_ELEMENT_CHOICE_FIELD_MAPPING
值: 8
欄位會對應至一組重複的專案選擇。


每個專案都會以具有選取器值的等位表示。
此對應必須與 WS_UNION_TYPE搭配使用。


欄位的 localName/ns 會當做 XML 元素使用
要用於專案 (包裝函式專案的名稱和命名空間
這是重複專案) 的父代。 如果沒有包裝函式
需要元素,則 localName/ns 應該是 Null


如果已指定包裝函式專案,包裝函式元素必須出現
如果重複專案計數不是 0,則為 XML。 WS_DEFAULT_VALUE可能
未為此欄位對應指定。


itemLocalName 和 itemNs 欄位必須是 Null。 XML 元素
名稱和命名空間定義于 WS_UNION_DESCRIPTION中。



syntax<br><br>struct Struct2<br>{<br> Struct* field; // see WS_UNION_DESCRIPTION for definition of Struct<br> ULONG fieldCount;<br>};<br><br>StructType values[2];<br>values[0].choice = ChoiceA;<br>values[0].values.a = 123;<br>values[1].choice = ChoiceB;<br>values[1].values.b = ...; // hello<br><br>Struct2 s2;<br>s2.field = values;<br>s2.fieldCount = 2;<br><br>// with wrapper element specified<br>&lt;Struct2&gt;<br> &lt;field&gt;<br> &lt;item&gt;123&lt;/item&gt;<br> &lt;item&gt;hello&lt;/item&gt;<br> &lt;/field&gt;<br>&lt;/Struct2&gt;<br><br>// with no wrapper element specified<br>&lt;Struct2&gt;<br> &lt;item&gt;123&lt;/item&gt;<br> &lt;item&gt;hello&lt;/item&gt;<br>&lt;/Struct2&gt;<br><br>

還原序列化陣列中的元素數目可以受到限制
藉由指定非NullWS_ITEM_RANGE 結構
WS_FIELD_DESCRIPTION的一部分。
WS_ANY_ELEMENT_FIELD_MAPPING
值: 9
WS_REPEATING_ANY_ELEMENT_FIELD_MAPPING
值: 10
欄位可用來捨棄或儲存元素序列
具有任何名稱和命名空間。


若要儲存專案,應該WS_XML_BUFFER_TYPE
可使用。 這會對應至 WS_XML_BUFFERs 的陣列。
如下所示:



syntax<br><br>struct Struct<br>{<br> // ... known fields ...<br> WS_XML_BUFFER** fields;<br> ULONG fieldCount;<br> // ... known fields ...<br>};<br><br>Struct s;<br>s.fields = ...; // { '&lt;unknown1/&gt;', '&lt;unknown2/&gt;'; }<br>s.fieldCount = 2;<br><br>&lt;Struct&gt;<br> ... known fields ...<br> &lt;unknown1/&gt;<br> &lt;unknown2/&gt;<br> ... known fields ...<br>&lt;/Struct&gt;<br><br>

若要捨棄元素,應該使用 WS_VOID_TYPE
在此情況下,結構中不需要欄位。 請參閱WS_VOID_TYPE
詳細資訊。


還原序列化期間允許的專案數目可能會受到限制
藉由指定非NullWS_ITEM_RANGE 結構
WS_FIELD_DESCRIPTION的一部分。


此對應不支援指定 WS_DEFAULT_VALUE
WS_ANY_CONTENT_FIELD_MAPPING
值: 11
欄位用來捨棄或儲存任何剩餘的內容
(結尾之前發生的任何文字或元素混合)
專案的 。


若要儲存專案,應該WS_XML_BUFFER_TYPE
可用,如下所示:



syntax<br><br>struct Struct<br>{<br> // ... known fields ...<br> WS_XML_BUFFER* field;<br>};<br><br>Struct s;<br>s.field = ...; // 'text1&lt;unknown1/&gt;text2&lt;unknown2/&gt;'<br><br>&lt;Struct&gt;<br> ... known fields ...<br> text1<br> &lt;unknown1/&gt;<br> text2<br> &lt;unknown2/&gt;<br>&lt;/Struct&gt;<br><br>

若要捨棄元素,應該使用 WS_VOID_TYPE
在此情況下,結構中不需要欄位。
如需詳細資訊 ,請參閱WS_VOID_TYPE


此對應不支援指定 WS_DEFAULT_VALUE
WS_ANY_ATTRIBUTES_FIELD_MAPPING
值: 12
欄位是用來捨棄或儲存任何不是的屬性
使用其他 WS_FIELD_MAPPING 值進行對應。


如果未指定此欄位對應,則未對應的屬性
還原序列化時會造成錯誤。


WS_FIELD_DESCRIPTION的名稱欄位必須是Null


WS_FIELD_DESCRIPTION的 ns 欄位會限制
允許的屬性命名空間,如下所示:

  • 如果 ns 欄位為 Null,則沒有任何限制。 此
    WS_FIELD_OTHER_NAMESPACE 欄位選項不能在此中設定
    情況 下。

  • 如果 ns 欄位為非Null,則為欄位選項
    WS_FIELD_OTHER_NAMESPACE 未設定欄位,然後
    屬性的命名空間必須與 ns 欄位中指定的命名空間相同。

  • 如果 ns 欄位為非Null,則為欄位選項
    WS_FIELD_OTHER_NAMESPACE 設定欄位,然後
    屬性必須具有與指定的命名空間不同的命名空間
    在 ns 欄位中。




若要儲存屬性, WS_ANY_ATTRIBUTES_TYPE 應該是
使用。 這會對應至 WS_ANY_ATTRIBUTES ,如下所示:



syntax<br><br>struct Struct<br>{<br> // ... known attributes ...<br> WS_ANY_ATTRIBUTES field;<br> // ... other content ...<br>};<br><br>Struct s;<br>s.field = ...; // 'unknown'/'http://example.com'/'value'<br><br>&lt;Struct <br> ... known attributes ... <br> xmlns:a='http://example.com' a:unknown='value'&gt;<br><br> ... other content ...<br>&lt;/Struct&gt;<br><br>

若要捨棄未對應的屬性,應該使用 WS_VOID_TYPE
在此情況下,結構中不需要欄位。
如需詳細資訊 ,請參閱WS_VOID_TYPE


此對應不支援指定 WS_DEFAULT_VALUE

備註

WS_FIELD_MAPPING指出 XML 內容的不同部分如何對應至結構的欄位。 例如, WS_ELEMENT_FIELD_MAPPING 可用來對應子項目的值,而 WS_ATTRIBUTE_FIELD_MAPPING 可用來對應屬性。 任何未明確對應的 XML 內容都會在還原序列化 XML 時傳回 WS_E_INVALID_FORMAT 。 (請參閱 Windows Web 服務傳回值。)

WS_STRUCT_DESCRIPTION內的WS_FIELD_DESCRIPTION順序取決於WS_FIELD_DESCRIPTIONWS_FIELD_MAPPING值。 如需訂購的詳細資訊,請參閱 WS_STRUCT_DESCRIPTION

規格需求

   
最低支援的用戶端 Windows 7 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 R2 [僅限傳統型應用程式]
標頭 webservices.h