次の方法で共有


WS_FIELD_MAPPING列挙 (webservices.h)

構造体のフィールドを XML で表す方法を指定します。 これは、WS_FIELD_DESCRIPTION内で使用されます。

構文

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;

定数

 
WS_TYPE_ATTRIBUTE_FIELD_MAPPING
値: 0
このフィールドは、XML 型属性 (xsi:type) に対応します。 これは、WS_DESCRIPTION_TYPEでのみ使用できます。


struct Base
{
WS_STRUCT_DESCRIPTION* 型。

// ...基本フィールド ...
};

struct Derived : Base
{
// ...派生フィールド ...
};

構造体構造体
{
Base* フィールド。
};

派生派生。
derived.type = &DerivedStructDescription;
構造体;
s.field = 派生 &;

<構造体>
<フィールド xsi:type='Derived'>
// ...基本フィールド ...
// ...派生フィールド ...
/field> を <する
</Struct>


このマッピングでは、WS_DEFAULT_VALUEの指定はサポートされていません。
WS_ATTRIBUTE_FIELD_MAPPING
値: 1
フィールドは 1 つの属性に対応します。

フィールドの localName/ns は、XML 属性名と名前空間として使用されます。

指定しない限り、属性は XML に含まれている必要があります。 WS_FIELD_OPTIONAL を指定した場合、属性を XML に表示する必要はありません。 省略可能で、存在しない場合、フィールドは WS_DEFAULT_VALUEに設定され、既定値が指定されていない場合は 0 に設定されます。


構造体構造体
{
int フィールド;
};

構造体;
s.field = 1;

<構造体 field='1'/>


属性を破棄するには、WS_VOID_TYPE を使用する必要があります。 この場合、構造ではフィールドは必要ありません。 詳細については、WS_VOID_TYPE を参照してください。
WS_ELEMENT_FIELD_MAPPING
値: 2
フィールドは 1 つの要素に対応します。

フィールドの localName/ns は、XML 要素名と名前空間として使用されます。

指定しない限り、要素は XML に含まれている必要があります。 WS_FIELD_OPTIONAL を指定した場合、要素を XML に表示する必要はありません。 省略可能で、存在しない場合、フィールドは WS_DEFAULT_VALUEに設定され、既定値が指定されていない場合は 0 に設定されます。


構造体構造体
{
int フィールド;
};

構造体;
s.field = 1;

<構造体>
<フィールド>1</field>
</Struct>


要素を破棄するには、WS_VOID_TYPE を使用する必要があります。 この場合、構造ではフィールドは必要ありません。 詳細については、WS_VOID_TYPE を参照してください。
WS_REPEATING_ELEMENT_FIELD_MAPPING
値: 3
フィールドは、要素の繰り返しセットに対応します。

フィールドの localName/ns は、ラッパー要素 (繰り返し要素の親である要素) に使用する XML 要素名と名前空間として使用されます。 ラッパー要素が必要ない場合は、両方の localName/ns を NULLする必要があります。

ラッパー要素が指定されている場合、繰り返し要素数が 0 でない場合は、ラッパー要素を XML に表示する必要があります。 このフィールド マッピングに WS_DEFAULT_VALUE を指定することはできません。

itemLocalName と itemN は、繰り返し要素の XML 要素名と名前空間として使用されます。


構造体構造体
{
int* フィールド;
ULONG fieldCount;
};

int values[] = { 1, 2 };
構造体;
s.field = values;
s.fieldCount = 2;

ラッパー要素が指定された状態
<構造体>
<フィールドの>
/item> 1<>項目を <する
<2</item>>項目
/field> を <する
</Struct>

ラッパー要素が指定されていない
<構造体>
/item> 1<>項目を <する
<2</item>>項目
</Struct>


逆シリアル化された配列内の要素の数は、WS_FIELD_DESCRIPTIONの一部である非NULLWS_ITEM_RANGE 構造体を指定することによって制限できます。
WS_TEXT_FIELD_MAPPING
値: 4
このフィールドは、要素の文字コンテンツ全体に対応します。 このマッピングを使用する場合、子要素は許可されません。

このマッピングは、一般的に WS_ATTRIBUTE_FIELD_MAPPING と組み合わせて使用され、一部のテキストと属性を含む要素 (ただし子要素は含まない) にマップされる構造体を定義します。


構造体構造体
{
int フィールド;
};

構造体;
s.field = 1;

<構造体>1</Struct>


このマッピングでは、WS_DEFAULT_VALUEの指定はサポートされていません。
WS_NO_FIELD_MAPPING
値: 5
フィールドはシリアル化も逆シリアル化もされません。

このフィールドはシリアル化時に無視され、逆シリアル化時に既定値に初期化されます。

フィールドが既存の型のいずれかにマップされている場合 (たとえば、WS_INT32_TYPE)、型を指定できます。 フィールドの型が既存の型の 1 つでない場合は、WS_VOID_TYPE を使用して任意の型とサイズのフィールドを指定できます。

フィールドを逆シリアル化するときにフィールドを初期化する値を提供する WS_DEFAULT_VALUE を指定できます。 既定値が指定されていない場合、フィールドは 0 に初期化されます。

フィールド マッピングは、WS_FIELD_OPTIONS 値が 0 の場合にのみ使用できます。


構造体構造体
{
int フィールド;
};

構造体;
s.field = 1;

<構造体/>
WS_XML_ATTRIBUTE_FIELD_MAPPING
値: 6
このフィールドは、予約済みの xml 属性 (xml:lang など) に対応します。

フィールドの localName は、XML 属性名を識別するために使用されます。

WS_FIELD_OPTIONAL を指定しない限り、属性は XML に含まれている必要があります。 WS_FIELD_OPTIONAL を指定した場合、属性を XML に表示する必要はありません。 省略可能で、存在しない場合、フィールドは WS_DEFAULT_VALUEに設定され、既定値が指定されていない場合は 0 に設定されます。


構造体構造体
{
WS_STRINGフィールド;
};

構造体;
s.field = ...;'us-en';

xml:lang の例
<構造体 xml:lang='us-en'/>

s.field = ...;'true'

xml:space の例
<構造体 xml:space='true'>
WS_ELEMENT_CHOICE_FIELD_MAPPING
値: 7
このフィールドは、使用可能な一連の要素の選択に対応します。 各要素は、共用体のいずれかのフィールドにマップされます。 共用体の各フィールドには対応する列挙値があり、これは現在の選択を識別するために使用されます。


さまざまな値の選択肢の列挙
enum Choice
{
ChoiceA = 10,
ChoiceB = 20,
なし = 0、
};

値の和集合と列挙型 'selector' を含む構造体
構造体構造体
{
選択肢の選択;
組合
{
int a;選択肢が ChoiceA の場合は有効
WS_STRING b;choice が ChoiceB の場合は有効
} 値。
};


このフィールド マッピングは、WS_UNION_TYPEで使用する必要があります。 要素の選択肢の名前と名前空間は、WS_UNION_DESCRIPTIONで指定されます。 フィールドの localName と ns は NULLする必要があります。

WS_FIELD_OPTIONAL を指定しない限り、要素の 1 つが XML に含まれている必要があります。 WS_FIELD_OPTIONAL を指定した場合、XML に表示する要素は必要ありません。 省略可能で、要素が存在しない場合、フィールドのセレクター値は列挙の none 値 (WS_UNION_DESCRIPTIONの noneEnumValue フィールドで指定) に設定されます。 既定値として nonEnumValue が使用されているため、このマッピング値は WS_DEFAULT_VALUEの指定をサポートしていません。


構造体;
s.choice = ChoiceA;
s.value.a = 123;

<構造体>
<123</choiceA>a>
</Struct>

構造体 S;
s.choice = ChoiceB;
s.value.b = ...;'hello'

<構造体>
<hello</choiceB>>choiceB
</Struct>

構造体 S;
s.choice = None;

<構造体>
</Struct>


このフィールドは、使用可能な一連の要素の選択に対応します。 各要素は、共用体のいずれかのフィールドにマップされます。 共用体の各フィールドには対応する列挙値があり、これは現在の選択を識別するために使用されます。


さまざまな値の選択肢の列挙
enum Choice
{
ChoiceA = 10,
ChoiceB = 20,
なし = 0、
};

値の和集合と、quot &列挙型を含む構造体。セレクター"
構造体構造体
{
選択肢の選択;
組合
{
int a;選択肢が ChoiceA の場合は有効
WS_STRING b;choice が ChoiceB の場合は有効
} 値。
};


このフィールド マッピングは、WS_UNION_TYPEで使用する必要があります。 要素の選択肢の名前と名前空間は、WS_UNION_DESCRIPTIONで指定されます。 フィールドの localName と ns は NULL
する必要があります。

WS_FIELD_OPTIONAL を指定しない限り、要素の 1 つが XML に含まれている必要があります。 WS_FIELD_OPTIONAL を指定した場合、XML に表示する要素は必要ありません。 省略可能で、要素が存在しない場合、フィールドのセレクター値は列挙の none 値 (WS_UNION_DESCRIPTIONの noneEnumValue フィールドで指定) に設定されます。 既定値として nonEnumValue が使用されているため、このマッピング値は WS_DEFAULT_VALUEの指定をサポートしていません。


構造体;
s.choice = ChoiceA;
s.value.a = 123;

<構造体>
<123</choiceA>a>
</Struct>

構造体 S;
s.choice = ChoiceB;
s.value.b = ...;"hello"

<構造体>
<hello</choiceB>>choiceB
</Struct>

構造体 S;
s.choice = None;

<構造体>
</Struct>


セレクター値は、共用体のどのフィールドが設定されているかを示します。 その他のフィールドは、値が逆シリアル化されるときに初期化されていないままです。 アプリケーションは常にセレクター値を参照して、共用体のフィールドにアクセス可能であることを確認する必要があります。
WS_REPEATING_ELEMENT_CHOICE_FIELD_MAPPING
値: 8
このフィールドは、要素の選択肢の繰り返しセットに対応します。

各項目は、セレクター値を持つ共用体で表されます。 このマッピングは、WS_UNION_TYPEで使用する必要があります。

フィールドの localName/ns は、ラッパー要素 (繰り返し要素の親である要素) に使用する XML 要素名と名前空間として使用されます。 ラッパー要素が必要ない場合は、両方の localName/ns を NULLする必要があります。

ラッパー要素が指定されている場合、繰り返し要素数が 0 でない場合は、ラッパー要素を XML に表示する必要があります。 このフィールド マッピングに WS_DEFAULT_VALUE を指定することはできません。

itemLocalName フィールドと itemNs フィールドは、NULL
する必要があります。 XML 要素名と名前空間は、WS_UNION_DESCRIPTIONで定義されます。


struct Struct2
{
Struct* フィールド。構造体の定義については、WS_UNION_DESCRIPTIONを参照してください
ULONG fieldCount;
};

StructType 値[2];
values[0].choice = ChoiceA;
values[0].values.a = 123;
values[1].choice = ChoiceB;
values[1].values.b = ...;こんにちは

Struct2 s2;
s2.field = values;
s2.fieldCount = 2;

ラッパー要素が指定された状態
<Struct2>
<フィールドの>
<項目>123</item>
hello</item>>項目を <する
/field> を <する
</Struct2>

ラッパー要素が指定されていない
<Struct2>
<項目>123</item>
hello</item>>項目を <する
</Struct2>


逆シリアル化された配列内の要素の数は、WS_FIELD_DESCRIPTIONの一部である非NULLWS_ITEM_RANGE 構造体を指定することによって制限できます。
WS_ANY_ELEMENT_FIELD_MAPPING
値: 9
未定
WS_REPEATING_ANY_ELEMENT_FIELD_MAPPING
値: 10
フィールドは、任意の名前と名前空間を持つ要素のシーケンスを破棄または格納するために使用されます。

要素を格納するには、WS_XML_BUFFER_TYPE を使用する必要があります。 これは、次のように、WS_XML_BUFFERs の配列に対応します。


構造体構造体
{
// ...既知のフィールド ...
WS_XML_BUFFER** フィールド;
ULONG fieldCount;
// ...既知のフィールド ...
};

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

<構造体>
...既知のフィールド ...
<unknown1/>
<unknown2/>
...既知のフィールド ...
</Struct>


要素を破棄するには、WS_VOID_TYPE を使用する必要があります。 この場合、構造ではフィールドは必要ありません。 詳細については、WS_VOID_TYPE を参照してください。

逆シリアル化中に許可される要素の数は、WS_FIELD_DESCRIPTIONの一部である非NULLWS_ITEM_RANGE 構造体を指定することによって制限できます。

このマッピングでは、WS_DEFAULT_VALUEの指定はサポートされていません。
WS_ANY_CONTENT_FIELD_MAPPING
値: 11
フィールドは、要素の末尾の前に発生する残りのコンテンツ (テキストまたは要素の組み合わせ) を破棄または格納するために使用されます。

要素を格納するには、次のように WS_XML_BUFFER_TYPE を使用する必要があります。


構造体構造体
{
// ...既知のフィールド ...
WS_XML_BUFFER* フィールド。
};

構造体;
s.field = ...;'text1<unknown1/>text2<unknown2/>'

<構造体>
...既知のフィールド ...
text1
<unknown1/>
text2
<unknown2/>
</Struct>


要素を破棄するには、WS_VOID_TYPE を使用する必要があります。 この場合、構造ではフィールドは必要ありません。 詳細については、WS_VOID_TYPE を参照してください。

このマッピングでは、WS_DEFAULT_VALUEの指定はサポートされていません。
WS_ANY_ATTRIBUTES_FIELD_MAPPING
値: 12
このフィールドは、他の WS_FIELD_MAPPING 値を使用してマップされなかった属性を破棄または格納するために使用されます。

このフィールド マッピングが指定されていない場合、マップされていない属性は逆シリアル化時にエラーを引き起こします。

WS_FIELD_DESCRIPTION の名前フィールドは NULLする必要があります。

WS_FIELD_DESCRIPTION の ns フィールドは、許可される属性の名前空間を次のように制限します。


  • ns フィールドが NULL場合、制限はありません。 ザ
    この場合 WS_FIELD_OTHER_NAMESPACE フィールド オプションは設定しないでください。

  • ns フィールドが null以外の場合、フィールド オプション
    フィールドに WS_FIELD_OTHER_NAMESPACE が設定されていない場合は、
    属性には、ns フィールドで指定されたものと同じ名前空間が必要です。

  • ns フィールドが null以外の場合、フィールド オプション
    フィールドに WS_FIELD_OTHER_NAMESPACE が設定され、
    属性には、指定された名前空間とは異なる名前空間が必要です
    を ns フィールドに入力します。



属性を格納するには、WS_ANY_ATTRIBUTES_TYPE を使用する必要があります。 これは、次のように WS_ANY_ATTRIBUTES に対応します。


構造体構造体
{
// ...既知の属性 ...
WS_ANY_ATTRIBUTESフィールド;
// ...その他のコンテンツ ...
};

構造体;
s.field = ...;'unknown'/'http://example.com'/'value'

<構造体
...既知の属性 ...
xmlns:a='http://example.com' a:unknown='value'>

...その他のコンテンツ ...
</Struct>


マップされていない属性を破棄するには、WS_VOID_TYPE を使用する必要があります。 この場合、構造ではフィールドは必要ありません。 詳細については、WS_VOID_TYPE を参照してください。

このマッピングでは、WS_DEFAULT_VALUEの指定はサポートされていません。

備考

WS_FIELD_MAPPING は、XML コンテンツのさまざまな部分が構造体のフィールドにどのようにマップされるかを示します。 たとえば、WS_ELEMENT_FIELD_MAPPING を使用して子要素の値をマップし、WS_ATTRIBUTE_FIELD_MAPPING を使用して属性をマップできます。 明示的にマップされていない XML コンテンツを読み取ると、XML が逆シリアル化されるときに WS_E_INVALID_FORMAT が返されます (Windows Web サービスの戻り値参照)。

WS_STRUCT_DESCRIPTION 内の WS_FIELD_DESCRIPTION の順序は、WS_FIELD_DESCRIPTIONWS_FIELD_MAPPING 値によって決まります。 順序の詳細については、WS_STRUCT_DESCRIPTION を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 7 [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2008 R2 [デスクトップ アプリのみ]
ヘッダー webservices.h