enumerasi WS_FIELD_MAPPING (webservices.h)
Menentukan bagaimana bidang struktur diwakili dalam XML. Ini digunakan dalam WS_FIELD_DESCRIPTION.
Sintaks
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;
Konstanta
WS_TYPE_ATTRIBUTE_FIELD_MAPPING Nilai: 0 Bidang sesuai dengan atribut jenis XML (xsi:type). Ini hanya dapat digunakan dengan 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> Pemetaan ini tidak mendukung penentukan WS_DEFAULT_VALUE. |
WS_ATTRIBUTE_FIELD_MAPPING Nilai: 1 Bidang sesuai dengan satu atribut. LocalName/ns bidang digunakan sebagai nama atribut XML dan namespace layanan. Kecuali ditentukan, atribut harus muncul di XML. Jika WS_FIELD_OPTIONAL ditentukan, maka atribut tidak diperlukan untuk muncul di XML. Jika opsional dan tidak ada, kemudian bidang diatur ke WS_DEFAULT_VALUE, atau nol jika nilai default tidak ditentukan. 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> Untuk membuang atribut, WS_VOID_TYPE harus digunakan. Dalam hal ini, bidang tidak diperlukan dalam struktur. Lihat WS_VOID_TYPE untuk informasi selengkapnya. |
WS_ELEMENT_FIELD_MAPPING Nilai: 2 Bidang sesuai dengan satu elemen. LocalName/ns bidang digunakan sebagai nama elemen XML dan namespace layanan. Kecuali ditentukan, elemen harus muncul di XML. Jika WS_FIELD_OPTIONAL ditentukan, maka elemen tidak diperlukan untuk muncul di XML. Jika opsional dan tidak ada, kemudian bidang diatur ke WS_DEFAULT_VALUE, atau nol jika nilai default tidak ditentukan. 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> Untuk membuang elemen, WS_VOID_TYPE harus digunakan. Dalam hal ini, bidang tidak diperlukan dalam struktur. Lihat WS_VOID_TYPE untuk informasi selengkapnya. |
WS_REPEATING_ELEMENT_FIELD_MAPPING Nilai: 3 Bidang sesuai dengan sekumpulan elemen berulang. LocalName/ns bidang digunakan sebagai elemen XML nama dan namespace yang akan digunakan untuk elemen pembungkus (elemen yang merupakan induk dari elemen berulang). Jika tidak ada pembungkus elemen diinginkan, maka kedua localName/ns harus NULL. Jika elemen pembungkus telah ditentukan, elemen pembungkus harus muncul dalam XML jika jumlah elemen berulang bukan 0. Sebuah WS_DEFAULT_VALUE dapat tidak ditentukan untuk pemetaan bidang ini. itemLocalName dan itemN digunakan sebagai elemen XML nama dan namespace layanan untuk elemen berulang. 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> Jumlah elemen dalam array yang dideserialisasi dapat dibatasi dengan menentukan struktur WS_ITEM_RANGEnon-NULL yang bagian dari WS_FIELD_DESCRIPTION. |
WS_TEXT_FIELD_MAPPING Nilai: 4 Bidang sesuai dengan seluruh konten karakter elemen. Ketika pemetaan ini digunakan, elemen anak tidak diizinkan. Pemetaan ini umumnya digunakan bersama dengan WS_ATTRIBUTE_FIELD_MAPPING untuk menentukan struktur yang memetakan ke elemen yang berisi beberapa teks dan atribut (tetapi tidak elemen anak). 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> Pemetaan ini tidak mendukung penentukan WS_DEFAULT_VALUE. |
WS_NO_FIELD_MAPPING Nilai: 5 Bidang tidak diserialisasikan atau dideserialisasi. Bidang diabaikan saat membuat serialisasi, dan diinisialisasi ke nilai default saat deserialisasi. Jika bidang memetakan ke salah satu jenis yang ada (misalnya WS_INT32_TYPE), maka jenisnya dapat ditentukan. Jika jenis bidang bukan salah satu dari jenis yang ada, maka WS_VOID_TYPE dapat digunakan untuk menentukan bidang dari jenis dan ukuran arbitrer. WS_DEFAULT_VALUE dapat ditentukan untuk memberikan nilai untuk menginisialisasi bidang ke saat deserialisasi bidang. Jika default nilai tidak ditentukan, maka bidang akan diinisialisasi menjadi nol. Pemetaan bidang hanya dapat digunakan dengan nilai 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 Nilai: 6 Bidang sesuai dengan atribut xml yang dipesan (seperti xml:lang). LocalName bidang digunakan untuk mengidentifikasi nama atribut XML. Kecuali WS_FIELD_OPTIONAL ditentukan, atribut harus muncul di XML. Jika WS_FIELD_OPTIONAL ditentukan, maka atribut tidak diperlukan untuk muncul di XML. Jika opsional dan tidak ada, kemudian bidang diatur ke WS_DEFAULT_VALUE, atau nol jika nilai default tidak ditentukan. 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 Nilai: 7 Bidang sesuai dengan pilihan di antara sekumpulan kemungkinan Elemen. Setiap elemen memetakan ke salah satu bidang serikat. Setiap bidang serikat memiliki nilai enum yang sesuai, yaitu digunakan untuk mengidentifikasi pilihan saat ini. 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> Pemetaan bidang ini harus digunakan dengan WS_UNION_TYPE. Nama dan namespace pilihan elemen ditentukan dalam WS_UNION_DESCRIPTION. LocalName bidang dan ns harus NULL. Kecuali WS_FIELD_OPTIONAL ditentukan, salah satu elemen harus muncul di XML. Jika WS_FIELD_OPTIONAL ditentukan, maka tidak ada elemen yang diperlukan untuk muncul di XML. Jika opsional dan tidak ada dari elemen ada, maka nilai pemilih bidang diatur ke tidak ada nilai enumerasi (seperti yang ditentukan dalam bidang noneEnumValue dari WS_UNION_DESCRIPTION). Karena fakta bahwa nonEnumValue digunakan sebagai nilai default, nilai pemetaan ini tidak mendukung menentukan 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> Bidang sesuai dengan pilihan di antara sekumpulan kemungkinan Elemen. Setiap elemen memetakan ke salah satu bidang gabungan. Setiap bidang serikat memiliki nilai enum yang sesuai, yaitu digunakan untuk mengidentifikasi pilihan saat ini. 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> Pemetaan bidang ini harus digunakan dengan WS_UNION_TYPE. Nama dan namespace dari pilihan elemen ditentukan dalam WS_UNION_DESCRIPTION. LocalName bidang dan ns harus NULL. Kecuali WS_FIELD_OPTIONAL ditentukan, salah satu elemen harus muncul di XML. Jika WS_FIELD_OPTIONAL ditentukan, maka tidak ada elemen yang diperlukan untuk muncul di XML. Jika opsional dan tidak ada dari elemen ada, maka nilai pemilih bidang diatur ke tidak ada nilai enumerasi (seperti yang ditentukan dalam bidang noneEnumValue dari WS_UNION_DESCRIPTION). Karena fakta bahwa nonEnumValue digunakan sebagai nilai default, nilai pemetaan ini tidak mendukung menentukan 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> Nilai pemilih menunjukkan bidang mana dari union diatur. Bidang lain dibiarkan tidak terinisialisasi ketika nilai dideserialisasi. Aplikasi harus selalu lihat nilai pemilih untuk memverifikasi bahwa bidang union dapat diakses. |
WS_REPEATING_ELEMENT_CHOICE_FIELD_MAPPING Nilai: 8 Bidang sesuai dengan sekumpulan pilihan elemen berulang. Setiap item diwakili oleh satuan dengan nilai pemilih. Pemetaan ini harus digunakan dengan WS_UNION_TYPE. LocalName/ns bidang digunakan sebagai elemen XML name dan namespace yang akan digunakan untuk elemen pembungkus (elemen yang merupakan induk dari elemen berulang). Jika tidak ada pembungkus elemen diinginkan, maka kedua localName/ns harus NULL. Jika elemen pembungkus telah ditentukan, elemen pembungkus harus muncul dalam XML jika jumlah elemen berulang bukan 0. WS_DEFAULT_VALUE dapat tidak ditentukan untuk pemetaan bidang ini. Bidang itemLocalName dan itemN harus NULL. Elemen XML name dan namespace didefinisikan dalam 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> Jumlah elemen dalam array yang dideserialisasi dapat dibatasi dengan menentukan struktur WS_ITEM_RANGEnon-NULL yaitu bagian dari WS_FIELD_DESCRIPTION. |
WS_ANY_ELEMENT_FIELD_MAPPING Nilai: 9 |
WS_REPEATING_ANY_ELEMENT_FIELD_MAPPING Nilai: 10 Bidang digunakan untuk membuang atau menyimpan urutan elemen dengan nama dan namespace apa pun. Untuk menyimpan elemen, WS_XML_BUFFER_TYPE harus digunakan. Ini sesuai dengan array WS_XML_BUFFERs, sebagai berikut: 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> Untuk membuang elemen, WS_VOID_TYPE harus digunakan. Dalam hal ini, bidang tidak diperlukan dalam struktur. Lihat WS_VOID_TYPE untuk informasi lebih lanjut. Jumlah elemen yang diizinkan selama deserialisasi dapat dibatasi dengan menentukan struktur WS_ITEM_RANGEnon-NULL yaitu bagian dari WS_FIELD_DESCRIPTION. Pemetaan ini tidak mendukung penentukan WS_DEFAULT_VALUE. |
WS_ANY_CONTENT_FIELD_MAPPING Nilai: 11 Bidang ini digunakan untuk membuang atau menyimpan isi yang tersisa (campuran teks atau elemen apa pun) yang terjadi sebelum akhir dari elemen . Untuk menyimpan elemen, WS_XML_BUFFER_TYPE harus digunakan, sebagai berikut: 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> Untuk membuang elemen, WS_VOID_TYPE harus digunakan. Dalam hal ini, bidang tidak diperlukan dalam struktur. Lihat WS_VOID_TYPE untuk informasi selengkapnya. Pemetaan ini tidak mendukung penentukan WS_DEFAULT_VALUE. |
WS_ANY_ATTRIBUTES_FIELD_MAPPING Nilai: 12 Bidang digunakan untuk membuang atau menyimpan atribut apa pun yang tidak dipetakan menggunakan nilai WS_FIELD_MAPPING lainnya. Jika pemetaan bidang ini tidak ditentukan, maka atribut yang tidak dipetakan akan menyebabkan kesalahan saat deserialisasi. Bidang nama WS_FIELD_DESCRIPTION harus NULL. Bidang ns dari WS_FIELD_DESCRIPTION membatasi namespace atribut yang diizinkan sebagai berikut:
Untuk menyimpan atribut, WS_ANY_ATTRIBUTES_TYPE harus Digunakan. Ini sesuai dengan WS_ANY_ATTRIBUTES sebagai berikut: 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> Untuk membuang atribut yang tidak dipetakan, WS_VOID_TYPE harus digunakan. Dalam hal ini, bidang tidak diperlukan dalam struktur. Lihat WS_VOID_TYPE untuk informasi selengkapnya. Pemetaan ini tidak mendukung penentukan WS_DEFAULT_VALUE. |
Keterangan
WS_FIELD_MAPPING menunjukkan bagaimana bagian yang berbeda dari konten XML dipetakan ke bidang struktur. Misalnya, WS_ELEMENT_FIELD_MAPPING dapat digunakan untuk memetakan nilai elemen anak, dan WS_ATTRIBUTE_FIELD_MAPPING dapat digunakan untuk memetakan atribut. Konten XML apa pun yang dibaca yang tidak dipetakan secara eksplisit akan menyebabkan WS_E_INVALID_FORMAT dikembalikan saat XML dideserialisasi. (Lihat Nilai Pengembalian Windows Web Services.)
Urutan WS_FIELD_DESCRIPTION dalam WS_STRUCT_DESCRIPTION ditentukan oleh nilai WS_FIELD_MAPPINGWS_FIELD_DESCRIPTION. Lihat WS_STRUCT_DESCRIPTION untuk informasi selengkapnya tentang pemesanan.
Persyaratan
Klien minimum yang didukung | Windows 7 [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2008 R2 [hanya aplikasi desktop] |
Header | webservices.h |