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 = &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> 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><Struct field='1'/><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><Struct><br> <field>1</field><br></Struct><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><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> 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><Struct>1</Struct><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><Struct/><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><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 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><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> 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 &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> 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><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> 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><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> 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 = ...; // { '<unknown1/>', '<unknown2/>'; }<br>s.fieldCount = 2;<br><br><Struct><br> ... known fields ...<br> <unknown1/><br> <unknown2/><br> ... known fields ...<br></Struct><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<unknown1/>text2<unknown2/>'<br><br><Struct><br> ... known fields ...<br> text1<br> <unknown1/><br> text2<br> <unknown2/><br></Struct><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:
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><Struct <br> ... known attributes ... <br> xmlns:a='http://example.com' a:unknown='value'><br><br> ... other content ...<br></Struct><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 |
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per