WS_FIELD_MAPPING-Aufzählung (webservices.h)

Gibt an, wie ein Feld einer Struktur in XML dargestellt wird. Dies wird in einem WS_FIELD_DESCRIPTIONverwendet.

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;

Konstanten

 
WS_TYPE_ATTRIBUTE_FIELD_MAPPING
Wert: 0
Das Feld entspricht dem XML-Typ-Attribut (xsi:type). Dies kann nur mit WS_DESCRIPTION_TYPEverwendet werden.


Strukturbasis
{
WS_STRUCT_DESCRIPTION* Typ;

// ... Basisfelder ...
};

Struktur abgeleitet : Basis
{
// ... abgeleitete Felder ...
};

Strukturstruktur
{
Base*-Feld;
};

Abgeleitete abgeleitete Daten;
derived.type = &DerivedStructDescription;
Struct s;
s.field = &abgeleitet;

<Struktur>
<Feld xsi:type='Derived'>
// ... Basisfelder ...
// ... abgeleitete Felder ...
</field>
</Struct>


Diese Zuordnung unterstützt die Angabe einer WS_DEFAULT_VALUEnicht.
WS_ATTRIBUTE_FIELD_MAPPING
Wert: 1
Das Feld entspricht einem einzelnen Attribut.

Die localName/ns des Felds werden als XML-Attributname und -Namespace verwendet.

Sofern nicht angegeben, muss das Attribut im XML-Code angezeigt werden. Wenn WS_FIELD_OPTIONAL angegeben ist, muss das Attribut nicht im XML-Code angezeigt werden. Wenn optional und nicht vorhanden, wird das Feld auf das WS_DEFAULT_VALUEoder null festgelegt, wenn der Standardwert nicht angegeben ist.


Strukturstruktur
{
int-Feld;
};

Struct s;
s.field = 1;

<Strukturfeld='1'/>


Um das Attribut zu verwerfen, sollte ein WS_VOID_TYPE verwendet werden. In diesem Fall ist ein Feld in der Struktur nicht erforderlich. Weitere Informationen finden Sie unter WS_VOID_TYPE.
WS_ELEMENT_FIELD_MAPPING
Wert: 2
Das Feld entspricht einem einzelnen Element.

Der localName/ns des Felds wird als XML-Elementname und -Namespace verwendet.

Sofern nicht angegeben, muss das Element im XML-Code angezeigt werden. Wenn WS_FIELD_OPTIONAL angegeben ist, muss das Element nicht im XML-Code angezeigt werden. Wenn optional und nicht vorhanden, wird das Feld auf das WS_DEFAULT_VALUEoder null festgelegt, wenn der Standardwert nicht angegeben ist.


Strukturstruktur
{
int-Feld;
};

Struct s;
s.field = 1;

<Struktur>
<Feld>1</field>
</Struct>


Um das Element zu verwerfen, sollte ein WS_VOID_TYPE verwendet werden. In diesem Fall ist ein Feld in der Struktur nicht erforderlich. Weitere Informationen finden Sie unter WS_VOID_TYPE.
WS_REPEATING_ELEMENT_FIELD_MAPPING
Wert: 3
Das Feld entspricht einem wiederholten Satz von Elementen.

Der localName/ns des Felds wird als XML-Elementname und -Namespace für das Wrapperelement verwendet (das Element, das das übergeordnete Element der wiederholten Elemente ist). Wenn kein Wrapperelement gewünscht wird, sollten beide localName/ns NULL-sein.

Wenn ein Wrapperelement angegeben wurde, muss das Wrapperelement im XML-Code angezeigt werden, wenn die Anzahl wiederholter Elemente nicht 0 ist. Für diese Feldzuordnung kann kein WS_DEFAULT_VALUE angegeben werden.

Die itemLocalName- und itemNs werden als XML-Elementname und -Namespace für das wiederholte Element verwendet.


Strukturstruktur
{
int*-Feld;
ULONG fieldCount;
};

int-Werte[] = { 1, 2 };
Struct s;
s.field = Werte;
s.fieldCount = 2;

mit angegebenem Wrapperelement
<Struktur>
<Feld>
<Element>1</item>
<Element>2</item>
</field>
</Struct>

ohne Wrapperelement angegeben
<Struktur>
<Element>1</item>
<Element>2</item>
</Struct>


Die Anzahl der Elemente im deserialisierten Array kann eingeschränkt werden, indem eine nicht-NULL-WS_ITEM_RANGE Struktur angegeben wird, die Teil der WS_FIELD_DESCRIPTIONist.
WS_TEXT_FIELD_MAPPING
Wert: 4
Das Feld entspricht dem gesamten Zeicheninhalt des Elements. Wenn diese Zuordnung verwendet wird, sind untergeordnete Elemente nicht zulässig.

Diese Zuordnung wird häufig in Verbindung mit WS_ATTRIBUTE_FIELD_MAPPING verwendet, um eine Struktur zu definieren, die einem Element zugeordnet ist, das Text und Attribute enthält (jedoch keine untergeordneten Elemente).


Strukturstruktur
{
int-Feld;
};

Struct s;
s.field = 1;

<Struktur>1</Struktur>


Diese Zuordnung unterstützt die Angabe einer WS_DEFAULT_VALUEnicht.
WS_NO_FIELD_MAPPING
Wert: 5
Das Feld wird weder serialisiert noch deserialisiert.

Das Feld wird beim Serialisieren ignoriert und beim Deserialisieren auf den Standardwert initialisiert.

Wenn das Feld einem der vorhandenen Typen zugeordnet ist (z. B. WS_INT32_TYPE), kann der Typ angegeben werden. Wenn der Typ des Felds nicht eines der vorhandenen Typen ist, können WS_VOID_TYPE verwendet werden, um ein Feld eines beliebigen Typs und einer beliebigen Größe anzugeben.

Ein WS_DEFAULT_VALUE kann angegeben werden, um den Wert anzugeben, an den das Feld initialisiert werden soll, wenn das Feld deserialisiert wird. Wenn kein Standardwert angegeben ist, wird das Feld auf Null initialisiert.

Die Feldzuordnung kann nur mit WS_FIELD_OPTIONS Wert 0 verwendet werden.


Strukturstruktur
{
int-Feld;
};

Struct s;
s.field = 1;

<Struktur/>
WS_XML_ATTRIBUTE_FIELD_MAPPING
Wert: 6
Das Feld entspricht einem reservierten XML-Attribut (z. B. xml:lang).

Der localName des Felds wird verwendet, um den XML-Attributnamen zu identifizieren.

Sofern WS_FIELD_OPTIONAL nicht angegeben ist, muss das Attribut im XML-Code angezeigt werden. Wenn WS_FIELD_OPTIONAL angegeben ist, muss das Attribut nicht im XML-Code angezeigt werden. Wenn optional und nicht vorhanden, wird das Feld auf das WS_DEFAULT_VALUEoder null festgelegt, wenn der Standardwert nicht angegeben ist.


Strukturstruktur
{
WS_STRING Feld;
};

Struct s;
s.field = ...; 'us-en';

Beispiel für xml:lang
<Struct xml:lang="us-en'/>

s.field = ...; "true"

Beispiel für xml:space
<Struktur xml:space='true'>
WS_ELEMENT_CHOICE_FIELD_MAPPING
Wert: 7
Das Feld entspricht einer Auswahl zwischen einer Reihe möglicher Elemente. Jedes Element ist einem der Felder einer Vereinigung zugeordnet. Jedes Feld der Union weist einen entsprechenden Enumerationswert auf, der verwendet wird, um die aktuelle Auswahl zu identifizieren.


Aufzählung von Auswahlmöglichkeiten verschiedener Werte
Aufzählungsauswahl
{
ChoiceA = 10,
ChoiceB = 20,
None = 0,
};

Struktur mit Vereinigung von Werten und Enumeration 'Selektor'
Strukturstruktur
{
Auswahlmöglichkeiten;
Vereinigung
{
int a; gültig, wenn die Auswahl ChoiceA ist
WS_STRING b; gültig, wenn choiceB ist
} Wert;
};


Diese Feldzuordnung muss mit WS_UNION_TYPEverwendet werden. Die Namen und Namespaces der Elementauswahl werden im WS_UNION_DESCRIPTIONangegeben. Der localName und ns des Felds sollten NULL-sein.

Sofern WS_FIELD_OPTIONAL nicht angegeben ist, muss eines der Elemente im XML-Code angezeigt werden. Wenn WS_FIELD_OPTIONAL angegeben ist, müssen keine Elemente im XML-Code angezeigt werden. Wenn optional und keines der Elemente vorhanden ist, wird der Selektorwert des Felds auf den keinen Wert der Enumeration festgelegt (wie im Feld "noneEnumValue" des WS_UNION_DESCRIPTIONangegeben). Aufgrund der Tatsache, dass der nonEnumValue als Standardwert verwendet wird, unterstützt dieser Zuordnungswert die Angabe eines WS_DEFAULT_VALUEnicht.


Struct s;
s.choice = ChoiceA;
s.value.a = 123;

<Struktur>
<ChoiceA>123</choiceA>
</Struct>

Struktur S;
s.choice = ChoiceB;
s.value.b = ...; "hallo"

<Struktur>
<choiceB>hello</choiceB>
</Struct>

Struktur S;
s.choice = None;

<Struktur>
</Struct>


Das Feld entspricht einer Auswahl zwischen einer Reihe möglicher Elemente. Jedes Element ist einem der Felder einer Vereinigung zugeordnet. Jedes Feld der Union weist einen entsprechenden Enumerationswert auf, der verwendet wird, um die aktuelle Auswahl zu identifizieren.


Aufzählung von Auswahlmöglichkeiten verschiedener Werte
Aufzählungsauswahl
{
ChoiceA = 10,
ChoiceB = 20,
None = 0,
};

Struktur, die eine Vereinigung von Werten enthält, und Enumeration &Quot; Selektor&Quot;
Strukturstruktur
{
Auswahlmöglichkeiten;
Vereinigung
{
int a; gültig, wenn die Auswahl ChoiceA ist
WS_STRING b; gültig, wenn choiceB ist
} Wert;
};


Diese Feldzuordnung muss mit WS_UNION_TYPEverwendet werden. Die Namen und Namespaces der Elementauswahl werden im WS_UNION_DESCRIPTIONangegeben. Der localName und ns des Felds sollten NULL-sein.

Sofern WS_FIELD_OPTIONAL nicht angegeben ist, muss eines der Elemente im XML-Code angezeigt werden. Wenn WS_FIELD_OPTIONAL angegeben ist, müssen keine Elemente im XML-Code angezeigt werden. Wenn optional und keines der Elemente vorhanden ist, wird der Selektorwert des Felds auf den keinen Wert der Enumeration festgelegt (wie im Feld "noneEnumValue" des WS_UNION_DESCRIPTIONangegeben). Aufgrund der Tatsache, dass der nonEnumValue als Standardwert verwendet wird, unterstützt dieser Zuordnungswert die Angabe eines WS_DEFAULT_VALUEnicht.


Struct s;
s.choice = ChoiceA;
s.value.a = 123;

<Struktur>
<ChoiceA>123</choiceA>
</Struct>

Struktur S;
s.choice = ChoiceB;
s.value.b = ...; &Quot; Hallo&Quot;

<Struktur>
<choiceB>hello</choiceB>
</Struct>

Struktur S;
s.choice = None;

<Struktur>
</Struct>


Der Selektorwert gibt an, welche Felder der Union festgelegt sind. Andere Felder werden nicht initialisiert, wenn der Wert deserialisiert wird. Eine Anwendung sollte immer den Selektorwert konsultieren, um zu überprüfen, ob auf ein Feld der Vereinigung zugegriffen werden kann.
WS_REPEATING_ELEMENT_CHOICE_FIELD_MAPPING
Wert: 8
Das Feld entspricht einem wiederholten Satz von Elementoptionen.

Jedes Element wird durch eine Vereinigung mit Selektorwert dargestellt. Diese Zuordnung muss mit WS_UNION_TYPEverwendet werden.

Der localName/ns des Felds wird als XML-Elementname und -Namespace für das Wrapperelement verwendet (das Element, das das übergeordnete Element der wiederholten Elemente ist). Wenn kein Wrapperelement gewünscht wird, sollten beide localName/ns NULL-sein.

Wenn ein Wrapperelement angegeben wurde, muss das Wrapperelement im XML-Code angezeigt werden, wenn die Anzahl wiederholter Elemente nicht 0 ist. Für diese Feldzuordnung kann kein WS_DEFAULT_VALUE angegeben werden.

Die Felder "itemLocalName" und "itemNs" müssen NULL-sein. Der NAME und namespace des XML-Elements werden im WS_UNION_DESCRIPTIONdefiniert.


Struktur Struct2
{
Struktur*-Feld; siehe WS_UNION_DESCRIPTION zur Definition der Struktur
ULONG fieldCount;
};

StructType-Werte[2];
values[0].choice = ChoiceA;
values[0].values.a = 123;
werte[1].choice = ChoiceB;
values[1].values.b = ...; Hallo

Struktur2 s2;
s2.field = Werte;
s2.fieldCount = 2;

mit angegebenem Wrapperelement
<Struktur2->
<Feld>
<Element>123</item>
<Element>hello</item>
</field>
</Struct2>

ohne Wrapperelement angegeben
<Struktur2->
<Element>123</item>
<Element>hello</item>
</Struct2>


Die Anzahl der Elemente im deserialisierten Array kann eingeschränkt werden, indem eine nicht-NULL-WS_ITEM_RANGE Struktur angegeben wird, die Teil der WS_FIELD_DESCRIPTIONist.
WS_ANY_ELEMENT_FIELD_MAPPING
Wert: 9
TBD
WS_REPEATING_ANY_ELEMENT_FIELD_MAPPING
Wert: 10
Das Feld wird verwendet, um eine Abfolge von Elementen mit einem beliebigen Namen und Namespace zu verwerfen oder zu speichern.

Um die Elemente zu speichern, sollte ein WS_XML_BUFFER_TYPE verwendet werden. Dies entspricht einem Array von WS_XML_BUFFERs, wie folgt:


Strukturstruktur
{
// ... Bekannte Felder ...
WS_XML_BUFFER** Felder;
ULONG fieldCount;
// ... Bekannte Felder ...
};

Struct s;
s.fields = ...; { '<unknown1/>', '<unknown2/>'; }
s.fieldCount = 2;

<Struktur>
... Bekannte Felder ...
<unbekannt1/>
<unbekannt2/>
... Bekannte Felder ...
</Struct>


Um die Elemente zu verwerfen, sollte ein WS_VOID_TYPE verwendet werden. In diesem Fall ist ein Feld in der Struktur nicht erforderlich. Weitere Informationen finden Sie unter WS_VOID_TYPE.

Die Anzahl der elemente, die während der Deserialisierung zulässig sind, kann durch Angabe einer nicht-NULL-WS_ITEM_RANGE Struktur eingeschränkt werden, die Teil der WS_FIELD_DESCRIPTIONist.

Diese Zuordnung unterstützt die Angabe einer WS_DEFAULT_VALUEnicht.
WS_ANY_CONTENT_FIELD_MAPPING
Wert: 11
Das Feld wird verwendet, um verbleibende Inhalte (beliebige Mischung aus Text oder Elementen) zu verwerfen oder zu speichern, die vor dem Ende eines Elements auftreten.

Um die Elemente zu speichern, sollte eine WS_XML_BUFFER_TYPE wie folgt verwendet werden:


Strukturstruktur
{
// ... Bekannte Felder ...
WS_XML_BUFFER*-Feld;
};

Struct s;
s.field = ...; "Text1<unbekannt1/>Text2<unbekannt2/>'

<Struktur>
... Bekannte Felder ...
text1
<unbekannt1/>
text2
<unbekannt2/>
</Struct>


Um die Elemente zu verwerfen, sollte ein WS_VOID_TYPE verwendet werden. In diesem Fall ist ein Feld in der Struktur nicht erforderlich. Weitere Informationen finden Sie unter WS_VOID_TYPE.

Diese Zuordnung unterstützt die Angabe einer WS_DEFAULT_VALUEnicht.
WS_ANY_ATTRIBUTES_FIELD_MAPPING
Wert: 12
Das Feld wird verwendet, um Attribute zu verwerfen oder zu speichern, die nicht mit anderen WS_FIELD_MAPPING Werten zugeordnet wurden.

Wenn diese Feldzuordnung nicht angegeben ist, verursacht nicht zugeordnete Attribute beim Deserialisieren einen Fehler.

Das Namensfeld der WS_FIELD_DESCRIPTION muss NULL-sein.

Das Feld "ns" der WS_FIELD_DESCRIPTION schränkt den Namespace der zulässigen Attribute wie folgt ein:


  • Wenn das ns-Feld NULL-ist, gibt es keine Einschränkung. Das
    WS_FIELD_OTHER_NAMESPACE Feldoption darf in diesem Fall nicht festgelegt werden.

  • Wenn das ns-Feld nichtNULL-ist, und die Feldoption
    WS_FIELD_OTHER_NAMESPACE für das Feld nicht festgelegt ist, dann
    das Attribut muss denselben Namespace aufweisen wie im Feld "ns".

  • Wenn das ns-Feld nichtNULL-ist, und die Feldoption
    WS_FIELD_OTHER_NAMESPACE wird für das Feld festgelegt, und dann
    Attribut muss einen anderen Namespace aufweisen als angegeben
    in the ns field.



Um die Attribute zu speichern, sollte WS_ANY_ATTRIBUTES_TYPE verwendet werden. Dies entspricht WS_ANY_ATTRIBUTES wie folgt:


Strukturstruktur
{
// ... Bekannte Attribute ...
WS_ANY_ATTRIBUTES-Feld;
// ... andere Inhalte ...
};

Struct s;
s.field = ...; 'unknown'/'http://example.com'/'value'

<Struktur
... Bekannte Attribute ...
xmlns:a='http://example.com' a:unknown='value'>

... andere Inhalte ...
</Struct>


Um die nicht zugeordneten Attribute zu verwerfen, sollte ein WS_VOID_TYPE verwendet werden. In diesem Fall ist ein Feld in der Struktur nicht erforderlich. Weitere Informationen finden Sie unter WS_VOID_TYPE.

Diese Zuordnung unterstützt die Angabe einer WS_DEFAULT_VALUEnicht.

Bemerkungen

Die WS_FIELD_MAPPING gibt an, wie verschiedene Teile des XML-Inhalts den Feldern einer Struktur zugeordnet werden. Beispielsweise können WS_ELEMENT_FIELD_MAPPING verwendet werden, um den Wert eines untergeordneten Elements zuzuordnen, und WS_ATTRIBUTE_FIELD_MAPPING können zum Zuordnen eines Attributs verwendet werden. Alle XML-Inhalte, die gelesen werden, die nicht explizit zugeordnet sind, führen dazu, dass WS_E_INVALID_FORMAT zurückgegeben werden, wenn der XML-Code deserialisiert wird (siehe Windows-Webdienste Gibt Wertezurück.)

Die Reihenfolge der WS_FIELD_DESCRIPTION innerhalb eines WS_STRUCT_DESCRIPTION wird durch den WS_FIELD_MAPPING Wert des WS_FIELD_DESCRIPTIONbestimmt. Weitere Informationen zur Bestellung finden Sie unter WS_STRUCT_DESCRIPTION.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 7 [nur Desktop-Apps]
mindestens unterstützte Server- Windows Server 2008 R2 [nur Desktop-Apps]
Header- webservices.h