2011-05-11 9 views
0

저는 다양한 SOAP 요청을 보내고 일반 형식을 사용하여 형성 될 SOAP 응답을 가져 오는 새 응용 프로그램의 GUI (WPF) 작업을하고 있습니다. 다음은 샘플 응답입니다.일반 SOAP 응답 처리에 대한 조언을 찾고 있습니다.

<SOAP-ENV:Body> 
    <TheResponse> 
     <MetaData> 
      <DataSchema> 
      <ColumnSchema type="decimal" ref="c0" name="min" /> 
      <ColumnSchema type="decimal" ref="c1" name="max" /> 
      </DataSchema> 
     </MetaData> 
     <Data> 
      <Item> 
      <c0>0</c0> 
      <c1>1</c1> 
      </Item> 
     </Data> 
    </TheResponse> 
    </SOAP-ENV:Body> 

위와 같이 SOAP 응답은 메타 데이터와 실제 데이터를 정의합니다. 요청/응답에 따라 다른 개체를 만들어야합니다. 이 예제에서 객체는 Min 및 Max라는 두 개의 속성을 가지며 그 값은 각각 0과 1입니다.

내가 예를 들어 내가 필요가 알고있는 개체에 대해 정의 된 클래스가있는 경우 :

class MyClass 
{ 
    public decimal Min {get; set;} 
    public decimal Max {get; set;} 
} 

가 어떻게 적절한 개체를 만들 수있는 SOAP 응답을 역 직렬화에 대해 갈 것

?

도움 주셔서 감사합니다.

답변

0

XSD을 사용하여 비누 메시지를 XML 스키마로 정의하는 것이 좋습니다.

당신은 스키마가 있으면 다음과 같은 사용하여 클래스를 생성 할 수 있습니다 : 비주얼 스튜디오 2010 명령 프롬프트에서

, 실행
Xsd.exe의 schema.xsd/클래스/언어 : [CS | VB].

이제 클래스가 생기면 XML Serialization을 사용하여 개체를 XML로 변환하고 XSD를 통해 생성 된 클래스를 사용하여 XML에서 개체로 변환 할 수 있습니다.

이러한 단계를 수행하면 XML을 검사/구문 분석 할 코드를 수동으로 작성해야 할 필요가 없습니다.

+0

도움말 주셔서 감사합니다. 요약 한 방법을 사용하면 에 대한 예제의 값이 최소/최대 속성을 올바르게 채 웁니까? 섹션의 값을 섹션의 속성 이름에 연결하는 것이 좋습니까? – Flack

+0

예제를 기반으로 비누 메시지의 직렬화를 통해 데이터를 전송하는 데 사용되는 클래스를 생성하는 데 사용하는 XSD 스키마로 메타 데이터 (DataSchema)가 정의되어 있습니다. 이렇게하면 c0 및 c1 값을 객체에로드 할 수 있습니다. 제 대답의 목적은 XML을 구문 분석하고 XML을 객체로 변환하는 코드를 작성하지 않으려 고 노력하는 것입니다. – Zamboni

관련 문제