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 = &DerivedStructDescription;<br>Struct s;<br>s.field = &derived;<br><br><Struct><br> <field xsi:type='Derived'><br> // ... base fields ...<br> // ... derived fields ...<br> </field><br></Struct><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><Struct field='1'/><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><Struct><br> <field>1</field><br></Struct><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><Struct><br> <field><br> <item>1</item><br> <item>2</item><br> </field><br></Struct><br><br>// with no wrapper element specified<br><Struct><br> <item>1</item><br> <item>2</item><br></Struct><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><Struct>1</Struct><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><Struct/><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><Struct xml:lang='us-en'/><br><br>s.field = ...; // 'true'<br><br>// Example of xml:space<br><Struct xml:space='true'><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><Struct><br> <choiceA>123</choiceA><br></Struct><br><br>Struct S;<br>s.choice = ChoiceB;<br>s.value.b = ...; // 'hello'<br><br><Struct><br> <choiceB>hello</choiceB><br></Struct><br><br>Struct S;<br>s.choice = None;<br><br><Struct><br></Struct> <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 &quot;selector&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><Struct><br> <choiceA>123</choiceA><br></Struct><br><br>Struct S;<br>s.choice = ChoiceB;<br>s.value.b = ...; // &quot;hello&quot;<br><br><Struct><br> <choiceB>hello</choiceB><br></Struct><br><br>Struct S;<br>s.choice = None;<br><br><Struct><br></Struct><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><Struct2><br> <field><br> <item>123</item><br> <item>hello</item><br> </field><br></Struct2><br><br>// with no wrapper element specified<br><Struct2><br> <item>123</item><br> <item>hello</item><br></Struct2><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 = ...; // { '<unknown1/>', '<unknown2/>'; }<br>s.fieldCount = 2;<br><br><Struct><br> ... known fields ...<br> <unknown1/><br> <unknown2/><br> ... known fields ...<br></Struct><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<unknown1/>text2<unknown2/>'<br><br><Struct><br> ... known fields ...<br> text1<br> <unknown1/><br> text2<br> <unknown2/><br></Struct><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 欄位會限制 允許的屬性命名空間,如下所示:
若要儲存屬性, 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><Struct <br> ... known attributes ... <br> xmlns:a='http://example.com' a:unknown='value'><br><br> ... other content ...<br></Struct><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_DESCRIPTION的WS_FIELD_MAPPING值。 如需訂購的詳細資訊,請參閱 WS_STRUCT_DESCRIPTION 。
規格需求
最低支援的用戶端 | Windows 7 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 R2 [僅限傳統型應用程式] |
標頭 | webservices.h |
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應