Share via


enumerazione WS_FIELD_MAPPING (webservices.h)

Specifica la modalità di rappresentazione di un campo di una struttura in XML. Viene usato all'interno di un WS_FIELD_DESCRIPTION.

Sintassi

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;

Costanti

 
WS_TYPE_ATTRIBUTE_FIELD_MAPPING
Valore: 0
Il campo corrisponde all'attributo di tipo XML (xsi:type). This
può essere usato solo con 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>

Questo mapping non supporta la specifica di un WS_DEFAULT_VALUE.
WS_ATTRIBUTE_FIELD_MAPPING
Valore: 1
Il campo corrisponde a un singolo attributo.


I valori localName/ns del campo vengono usati come nome e spazio dei nomi dell'attributo XML.


Se non specificato, l'attributo deve essere visualizzato nel codice XML.
Se viene specificato WS_FIELD_OPTIONAL , l'attributo
non è necessario che venga visualizzato nel codice XML. Se facoltativo e non
presente, quindi il campo viene impostato sul WS_DEFAULT_VALUE,
o zero se il valore predefinito non è specificato.



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>

Per eliminare l'attributo, è necessario usare un WS_VOID_TYPE .
In questo caso, un campo non è obbligatorio nella struttura.
Per altre informazioni, vedere WS_VOID_TYPE .
WS_ELEMENT_FIELD_MAPPING
Valore: 2
Il campo corrisponde a un singolo elemento.


I valori localName/ns del campo vengono usati come nome e spazio dei nomi dell'elemento XML.


Se non specificato, l'elemento deve essere visualizzato nel codice XML.
Se viene specificato WS_FIELD_OPTIONAL , l'elemento
non è necessario che venga visualizzato nel codice XML. Se facoltativo e non
presente, quindi il campo viene impostato sul WS_DEFAULT_VALUE,
o zero se il valore predefinito non è specificato.



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>

Per eliminare l'elemento, è necessario usare un WS_VOID_TYPE .
In questo caso, un campo non è obbligatorio nella struttura.
Per altre informazioni, vedere WS_VOID_TYPE .
WS_REPEATING_ELEMENT_FIELD_MAPPING
Valore: 3
Il campo corrisponde a un set ripetuto di elementi.


I valori localName/ns del campo vengono usati come elemento XML
nome e spazio dei nomi da usare per l'elemento wrapper (l'elemento
che è l'elemento padre degli elementi ripetuti). Se non è disponibile alcun wrapper
l'elemento è desiderato, quindi entrambi localName/ns devono essere NULL.


Se è stato specificato un elemento wrapper, l'elemento wrapper deve essere visualizzato
nel codice XML se il numero di elementi ripetuti non è 0. Un WS_DEFAULT_VALUE può
non è specificato per questo mapping dei campi.


ItemLocalName e itemN vengono usati come elemento XML
nome e spazio dei nomi per l'elemento ripetuto.



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>

Il numero di elementi nella matrice deserializzata può essere vincolato
specificando una struttura di WS_ITEM_RANGE non NULL
parte del WS_FIELD_DESCRIPTION.
WS_TEXT_FIELD_MAPPING
Valore: 4
Il campo corrisponde all'intero contenuto di caratteri dell'elemento.
Quando si usa questo mapping, gli elementi figlio non sono consentiti.


Questo mapping viene comunemente usato in combinazione con WS_ATTRIBUTE_FIELD_MAPPING per definire una struttura mappata a un elemento contenente alcuni attributi e testo (ma non
elementi figlio).



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>

Questo mapping non supporta la specifica di un WS_DEFAULT_VALUE.
WS_NO_FIELD_MAPPING
Valore: 5
Il campo non è serializzato o deserializzato.


Il campo viene ignorato durante la serializzazione e viene inizializzato nell'oggetto
valore predefinito durante la deserializzazione.


Se il campo esegue il mapping a uno dei tipi esistenti (ad esempio WS_INT32_TYPE),
è quindi possibile specificare il tipo. Se il tipo del campo non è uno di
i tipi esistenti, quindi WS_VOID_TYPE possono essere usati per specificare
un campo di un tipo e dimensioni arbitrarie.


È possibile specificare un WS_DEFAULT_VALUE per specificare il valore
per inizializzare il campo in durante la deserializzazione del campo. Se un valore predefinito
il valore non viene specificato, quindi il campo verrà inizializzato su zero.


Il mapping dei campi può essere usato solo con WS_FIELD_OPTIONS valore 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
Valore: 6
Il campo corrisponde a un attributo XML riservato, ad esempio xml:lang.


Il nome locale del campo viene usato per identificare il nome dell'attributo XML.


A meno che non venga specificato WS_FIELD_OPTIONAL , l'attributo deve
vengono visualizzati nel codice XML. Se viene specificato WS_FIELD_OPTIONAL ,
non è quindi necessario che l'attributo venga visualizzato nel codice XML. Se facoltativo e non
presente, quindi il campo viene impostato sul WS_DEFAULT_VALUE,
o zero se il valore predefinito non è specificato.



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
Valore: 7
Il campo corrisponde a una scelta tra un set di possibili
degli elementi. Ogni elemento esegue il mapping a uno dei campi di un'unione.
Ogni campo dell'unione ha un valore di enumerazione corrispondente, ovvero
utilizzato per identificare la scelta corrente.



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>

Questo mapping dei campi deve essere utilizzato con WS_UNION_TYPE.
I nomi e gli spazi dei nomi delle scelte degli elementi vengono specificati in
WS_UNION_DESCRIPTION. LocalName del campo
e ns devono essere NULL.


A meno che non venga specificato WS_FIELD_OPTIONAL , uno dei
gli elementi devono essere visualizzati nel codice XML. Se viene specificato WS_FIELD_OPTIONAL ,
non è quindi necessario che nessuno degli elementi venga visualizzato nel codice XML. Se facoltativo e nessuno
degli elementi sono presenti, quindi il valore del selettore del campo viene impostato su
nessun valore dell'enumerazione (come specificato nel campo noneEnumValue di
il WS_UNION_DESCRIPTION). A causa del fatto che nonEnumValue
viene usato come valore predefinito, questo valore di mapping non supporta
specifica di un 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>

Il campo corrisponde a una scelta tra un set di possibili
degli elementi. Ogni elemento esegue il mapping a uno dei campi di un'unione.
Ogni campo dell'unione ha un valore di enumerazione corrispondente, ovvero
utilizzato per identificare la scelta corrente.



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>

Questo mapping dei campi deve essere utilizzato con WS_UNION_TYPE.
I nomi e gli spazi dei nomi delle scelte degli elementi vengono specificati in
WS_UNION_DESCRIPTION. LocalName del campo
e ns devono essere NULL.


A meno che non venga specificato WS_FIELD_OPTIONAL , uno dei
gli elementi devono essere visualizzati nel codice XML. Se viene specificato WS_FIELD_OPTIONAL ,
non è quindi necessario che nessuno degli elementi venga visualizzato nel codice XML. Se facoltativo e nessuno
degli elementi sono presenti, quindi il valore del selettore del campo viene impostato su
nessun valore dell'enumerazione (come specificato nel campo noneEnumValue di
il WS_UNION_DESCRIPTION). A causa del fatto che nonEnumValue
viene usato come valore predefinito, questo valore di mapping non supporta
specifica di un 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>

Il valore del selettore indica quale dei campi del
l'unione è impostata. Altri campi vengono lasciati non inizializzati quando
il valore viene deserializzato. Un'applicazione deve sempre
consultare il valore del selettore per verificare che un campo del
l'unione è accessibile.
WS_REPEATING_ELEMENT_CHOICE_FIELD_MAPPING
Valore: 8
Il campo corrisponde a un set ripetuto di scelte di elementi.


Ogni elemento è rappresentato da un'unione con il valore del selettore.
Questo mapping deve essere usato con WS_UNION_TYPE.


I valori localName/ns del campo vengono usati come elemento XML
nome e spazio dei nomi da usare per l'elemento wrapper (l'elemento
che è l'elemento padre degli elementi ripetuti). Se non è disponibile alcun wrapper
l'elemento è desiderato, quindi entrambi localName/ns devono essere NULL.


Se è stato specificato un elemento wrapper, l'elemento wrapper deve essere visualizzato
nel codice XML se il numero di elementi ripetuti non è 0. Un WS_DEFAULT_VALUE può
non è specificato per questo mapping dei campi.


I campi itemLocalName e itemN devono essere NULL. Elemento XML
il nome e lo spazio dei nomi vengono definiti nel 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>

Il numero di elementi nella matrice deserializzata può essere vincolato
specificando una struttura di WS_ITEM_RANGE non NULL
parte del WS_FIELD_DESCRIPTION.
WS_ANY_ELEMENT_FIELD_MAPPING
Valore: 9
WS_REPEATING_ANY_ELEMENT_FIELD_MAPPING
Valore: 10
Il campo viene usato per eliminare o archiviare una sequenza di elementi
con qualsiasi nome e spazio dei nomi.


Per archiviare gli elementi, un WS_XML_BUFFER_TYPE deve
di rete. Corrisponde a una matrice di WS_XML_BUFFER,
come indicato di seguito:



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>

Per eliminare gli elementi, è necessario usare un WS_VOID_TYPE .
In questo caso, un campo non è obbligatorio nella struttura. Vedere WS_VOID_TYPE per
altre informazioni.


Il numero di elementi consentiti durante la deserializzazione può essere vincolato
specificando una struttura di WS_ITEM_RANGE non NULL
parte del WS_FIELD_DESCRIPTION.


Questo mapping non supporta la specifica di un WS_DEFAULT_VALUE.
WS_ANY_CONTENT_FIELD_MAPPING
Valore: 11
Il campo viene usato per eliminare o archiviare il contenuto rimanente
(qualsiasi combinazione di testo o elementi) che si verifica prima della fine
di un elemento.


Per archiviare gli elementi, un WS_XML_BUFFER_TYPE deve
da usare, come indicato di seguito:



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>

Per eliminare gli elementi, è necessario usare un WS_VOID_TYPE .
In questo caso, un campo non è obbligatorio nella struttura.
Per altre informazioni, vedere WS_VOID_TYPE .


Questo mapping non supporta la specifica di un WS_DEFAULT_VALUE.
WS_ANY_ATTRIBUTES_FIELD_MAPPING
Valore: 12
Il campo viene usato per eliminare o archiviare gli attributi che non erano
mappato usando altri valori di WS_FIELD_MAPPING .


Se questo mapping di campi non viene specificato, gli attributi non mappati
genererà un errore durante la deserializzazione.


Il campo name del WS_FIELD_DESCRIPTION deve essere NULL.


Il campo ns del WS_FIELD_DESCRIPTION limita l'oggetto
spazio dei nomi degli attributi consentiti come indicato di seguito:

  • Se il campo ns è NULL, non esiste alcuna restrizione. The
    WS_FIELD_OTHER_NAMESPACE'opzione campo non deve essere impostata in questo
    Caso.

  • Se il campo ns è diverso da NULL e l'opzione campo
    WS_FIELD_OTHER_NAMESPACE non è impostato per il campo, quindi
    L'attributo deve avere lo stesso spazio dei nomi specificato nel campo ns.

  • Se il campo ns è diverso da NULL e l'opzione campo
    WS_FIELD_OTHER_NAMESPACE è impostato per il campo, quindi
    l'attributo deve avere uno spazio dei nomi diverso da quello specificato
    nel campo ns.




Per archiviare gli attributi, WS_ANY_ATTRIBUTES_TYPE deve essere
Utilizzato. Corrisponde a WS_ANY_ATTRIBUTES come indicato di seguito:



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>

Per rimuovere gli attributi non mappati, è necessario usare un WS_VOID_TYPE .
In questo caso, un campo non è obbligatorio nella struttura.
Per altre informazioni, vedere WS_VOID_TYPE .


Questo mapping non supporta la specifica di un WS_DEFAULT_VALUE.

Commenti

L'WS_FIELD_MAPPING indica il mapping di parti diverse del contenuto XML ai campi di una struttura. Ad esempio, WS_ELEMENT_FIELD_MAPPING può essere usato per eseguire il mapping del valore di un elemento figlio e WS_ATTRIBUTE_FIELD_MAPPING può essere usato per eseguire il mapping di un attributo. Qualsiasi contenuto XML letto non mappato in modo esplicito causerà la restituzione di WS_E_INVALID_FORMAT quando il codice XML viene deserializzato. Vedere Valori restituiti di Servizi Web Windows.

L'ordine dei WS_FIELD_DESCRIPTION all'interno di un WS_STRUCT_DESCRIPTION è determinato dal valore WS_FIELD_MAPPING del WS_FIELD_DESCRIPTION. Per altre informazioni sull'ordinamento, vedere WS_STRUCT_DESCRIPTION.

Requisiti

   
Client minimo supportato Windows 7 [solo app desktop]
Server minimo supportato Windows Server 2008 R2 [solo app desktop]
Intestazione webservices.h