Bagikan melalui


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 = &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>

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>&lt;Struct field='1'/&gt;<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>&lt;Struct&gt;<br> &lt;field&gt;1&lt;/field&gt;<br>&lt;/Struct&gt;<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>&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>

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>&lt;Struct&gt;1&lt;/Struct&gt;<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>&lt;Struct/&gt;<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>&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
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>&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>

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 &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>

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>&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>

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>&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>

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 = ...; // { '&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>

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&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>

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:

  • Jika bidang ns ADALAH NULL, maka tidak ada batasan. The
    WS_FIELD_OTHER_NAMESPACE opsi bidang tidak boleh diatur dalam ini
    Kasus.

  • Jika bidang ns bukan NULL, dan opsi bidang
    WS_FIELD_OTHER_NAMESPACE tidak diatur untuk bidang, maka
    atribut harus memiliki namespace yang sama seperti yang ditentukan di bidang ns.

  • Jika bidang ns bukan NULL, dan opsi bidang
    WS_FIELD_OTHER_NAMESPACE diatur untuk bidang, lalu
    atribut harus memiliki namespace yang berbeda dari yang ditentukan
    di bidang ns.




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>&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>

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