다음을 통해 공유


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* 형식;

// ... 기본 필드 ...
};

구조체 파생: Base
{
// ... 파생 필드 ...
};

구조체 구조체
{
기본* 필드;
};

파생된 파생;
derived.type = &DerivedStructDescription;
구조체 s;
s.field = &파생됨;

<구조체>
<필드 xsi:type='Derived'>
// ... 기본 필드 ...
// ... 파생 필드 ...
/field><
</구조체>


이 매핑은 WS_DEFAULT_VALUE지정을 지원하지 않습니다.
WS_ATTRIBUTE_FIELD_MAPPING
값: 1
필드는 단일 특성에 해당합니다.

필드의 localName/ns는 XML 특성 이름 및 네임스페이스로 사용됩니다.

지정하지 않으면 특성이 XML에 표시되어야 합니다. WS_FIELD_OPTIONAL 지정한 경우 XML에 특성을 표시할 필요가 없습니다. 선택 사항이고 없는 경우 필드가 WS_DEFAULT_VALUE설정되거나 기본값이 지정되지 않은 경우 0으로 설정됩니다.


구조체 구조체
{
int 필드;
};

구조체 s;
s.field = 1;

<구조체 필드='1'/>


특성을 삭제하려면 WS_VOID_TYPE 사용해야 합니다. 이 경우 구조체에 필드가 필요하지 않습니다. 자세한 내용은 WS_VOID_TYPE 참조하세요.
WS_ELEMENT_FIELD_MAPPING
값: 2
필드는 단일 요소에 해당합니다.

필드의 localName/ns는 XML 요소 이름 및 네임스페이스로 사용됩니다.

지정하지 않으면 요소가 XML에 표시되어야 합니다. WS_FIELD_OPTIONAL 지정한 경우 요소를 XML에 표시할 필요가 없습니다. 선택 사항이고 없는 경우 필드가 WS_DEFAULT_VALUE설정되거나 기본값이 지정되지 않은 경우 0으로 설정됩니다.


구조체 구조체
{
int 필드;
};

구조체 s;
s.field = 1;

<구조체>
<필드>1</field>
</구조체>


요소를 삭제하려면 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;
s.field = values;
s.fieldCount = 2;

래퍼 요소가 지정된 경우
<구조체>
<필드>
<항목>1</item>
<항목>2</item>
/field><
</구조체>

래퍼 요소가 지정되지 않은 경우
<구조체>
<항목>1</item>
<항목>2</item>
</구조체>


역직렬화된 배열의 요소 수는 WS_FIELD_DESCRIPTION일부인NULLWS_ITEM_RANGE 구조를 지정하여 제한할 수 있습니다.
WS_TEXT_FIELD_MAPPING
값: 4
필드는 요소의 전체 문자 내용에 해당합니다. 이 매핑을 사용하면 자식 요소가 허용되지 않습니다.

이 매핑은 일반적으로 WS_ATTRIBUTE_FIELD_MAPPING 함께 일부 텍스트 및 특성을 포함하는 요소에 매핑되는 구조를 정의하는 데 사용됩니다(자식 요소는 없음).


구조체 구조체
{
int 필드;
};

구조체 s;
s.field = 1;

<구조체>1</구조체>


이 매핑은 WS_DEFAULT_VALUE지정을 지원하지 않습니다.
WS_NO_FIELD_MAPPING
값: 5
필드는 직렬화되거나 역직렬화되지 않습니다.

직렬화할 때 필드가 무시되고 역직렬화할 때 기본값으로 초기화됩니다.

필드가 기존 형식 중 하나에 매핑되는 경우(예: WS_INT32_TYPE) 형식을 지정할 수 있습니다. 필드의 형식이 기존 형식 중 하나가 아닌 경우 WS_VOID_TYPE 사용하여 임의의 형식 및 크기의 필드를 지정할 수 있습니다.

필드를 역직렬화할 때 필드를 초기화하는 값을 제공하기 위해 WS_DEFAULT_VALUE 지정할 수 있습니다. 기본값을 지정하지 않으면 필드가 0으로 초기화됩니다.

필드 매핑은 WS_FIELD_OPTIONS 값이 0인 경우에만 사용할 수 있습니다.


구조체 구조체
{
int 필드;
};

구조체 s;
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;
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,
None = 0,
};

값의 합을 포함하는 구조체 및 열거형 'selector'
구조체 구조체
{
선택 선택;
합집합
{
int a; 선택 항목이 ChoiceA인 경우 유효합니다.
WS_STRING b; 선택 항목이 ChoiceB인 경우 유효합니다.
} 값;
};


이 필드 매핑은 WS_UNION_TYPE함께 사용해야 합니다. 요소 선택 항목의 이름과 네임스페이스는 WS_UNION_DESCRIPTION지정됩니다. 필드의 localName 및 ns는 NULL합니다.

WS_FIELD_OPTIONAL 지정하지 않으면 요소 중 하나가 XML에 표시되어야 합니다. WS_FIELD_OPTIONAL 지정한 경우 XML에 표시할 요소가 없습니다. 선택 요소와 요소가 없는 경우 필드의 선택기 값은 열거형의 none 값(WS_UNION_DESCRIPTIONnoneEnumValue 필드에 지정됨)으로 설정됩니다. nonEnumValue가 기본값으로 사용되므로 이 매핑 값은 WS_DEFAULT_VALUE지정을 지원하지 않습니다.


구조체 s;
s.choice = ChoiceA;
s.value.a = 123;

<구조체>
<choiceA>123</choiceA>
</구조체>

구조체 S;
s.choice = ChoiceB;
s.value.b = ...; 'hello'

<구조체>
<choiceB>hello</choiceB>
</구조체>

구조체 S;
s.choice = None;

<구조체>
</구조체>


필드는 가능한 요소 집합 중에서 선택한 항목에 해당합니다. 각 요소는 공용 구조체의 필드 중 하나에 매핑됩니다. 공용 구조체의 각 필드에는 현재 선택을 식별하는 데 사용되는 해당 열거형 값이 있습니다.


다른 값의 선택 항목 열거형
enum Choice
{
ChoiceA = 10,
ChoiceB = 20,
None = 0,
};

값의 합을 포함하는 구조체 및 열거형 &따옴표; selector"
구조체 구조체
{
선택 선택;
합집합
{
int a; 선택 항목이 ChoiceA인 경우 유효합니다.
WS_STRING b; 선택 항목이 ChoiceB인 경우 유효합니다.
} 값;
};


이 필드 매핑은 WS_UNION_TYPE함께 사용해야 합니다. 요소 선택 항목의 이름과 네임스페이스는 WS_UNION_DESCRIPTION지정됩니다. 필드의 localName 및 ns는 NULL
합니다.

WS_FIELD_OPTIONAL 지정하지 않으면 요소 중 하나가 XML에 표시되어야 합니다. WS_FIELD_OPTIONAL 지정한 경우 XML에 표시할 요소가 없습니다. 선택 요소와 요소가 없는 경우 필드의 선택기 값은 열거형의 none 값(WS_UNION_DESCRIPTIONnoneEnumValue 필드에 지정됨)으로 설정됩니다. nonEnumValue가 기본값으로 사용되므로 이 매핑 값은 WS_DEFAULT_VALUE지정을 지원하지 않습니다.


구조체 s;
s.choice = ChoiceA;
s.value.a = 123;

<구조체>
<choiceA>123</choiceA>
</구조체>

구조체 S;
s.choice = ChoiceB;
s.value.b = ...; &따옴표; hello"

<구조체>
<choiceB>hello</choiceB>
</구조체>

구조체 S;
s.choice = None;

<구조체>
</구조체>


선택기 값은 집합된 공용 구조체의 필드를 나타냅니다. 값이 역직렬화될 때 다른 필드는 초기화되지 않은 상태로 남아 있습니다. 애플리케이션은 항상 선택기 값을 참조하여 공용 구조체의 필드에 액세스할 수 있는지 확인해야 합니다.
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
{
구조체* 필드; 구조체 정의에 대한 WS_UNION_DESCRIPTION 참조
ULONG fieldCount;
};

StructType 값[2];
values[0].choice = ChoiceA;
values[0].values.a = 123;
values[1].choice = ChoiceB;
values[1].values.b = ...; 안녕하세요

구조체2 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_BUFFER배열에 해당합니다.


구조체 구조체
{
// ... 알려진 필드 ...
WS_XML_BUFFER** 필드;
ULONG fieldCount;
// ... 알려진 필드 ...
};

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

<구조체>
... 알려진 필드 ...
<unknown1/>
<unknown2/>
... 알려진 필드 ...
</구조체>


요소를 삭제하려면 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;
s.field = ...; 'text1<unknown1/>text2<unknown2/>'

<구조체>
... 알려진 필드 ...
text1
<unknown1/>
text2
<unknown2/>
</구조체>


요소를 삭제하려면 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;
s.field = ...; 'unknown'/'http://example.com'/'value'

<구조체
... 알려진 특성 ...
xmlns:a='http://example.com'a:unknown='value'>

... 기타 콘텐츠...
</구조체>


매핑되지 않은 특성을 삭제하려면 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 Services가값을 반환하는 참조).

WS_STRUCT_DESCRIPTION 내의 WS_FIELD_DESCRIPTION 순서는 WS_FIELD_DESCRIPTIONWS_FIELD_MAPPING 값에 따라 결정됩니다. 주문에 대한 자세한 내용은 WS_STRUCT_DESCRIPTION 참조하세요.

요구 사항

요구
지원되는 최소 클라이언트 Windows 7 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 R2 [데스크톱 앱만 해당]
헤더 webservices.h