2014-04-10 5 views
0

웹 서비스에서 아래 SOAP 응답을 받았습니다.SOAP 응답에서 추가 데이터 가져 오기

<soap:Body> 
<SubscriptionQueryResponse> 
    <Subscriptions> 
     <Subscription></Subscription> 
     <Subscription></Subscription> 
    </Subscriptions> 
    <TotalCount>2</TotalCount> 
    <ResultCount>2</ResultCount> 
    <StartingSequence>0</StartingSequence> 
</SubscriptionQueryResponse> 
</soap:Body> 

총계를 가져와야합니다. 당신이 볼 수 있듯이

[SoapDocumentMethod("&&&", RequestElementName = "SubscriptionQueryRequest", RequestNamespace = "&&&", ResponseNamespace = "&&&", Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)] 
    [return: XmlArray("Subscriptions")] 
    [return: XmlArrayItem("Subscription", IsNullable = false)] 
    public Subscription[] SubscriptionQuery(string SubscriberId, int SortType, bool SortDescending, string Service, string ReferenceID, string SubscriptionName, int StartingSequence, int ResultCount) 
    { 
     object[] results = this.Invoke("SubscriptionQuery", new object[] { 
       SubscriberId, 
       SortType, 
       SortDescending, 
       Service, 
       ReferenceID, 
       SubscriptionName, 
       StartingSequence, 
       ResultCount 
     }); 
     return ((Subscription[])(results[0])); 
    } 

것은 이미 구독을 반환하고 있습니다 :

다음은 내 코드입니다. 구독 목록은 반환 된 배열의 인덱스 0에 있습니다. 반환 된 배열의 인덱스 1로 Total Count를 반환하고 싶지만 반환 XmlArray 문은 구독 만 반환하고 자동으로 캐스팅합니다.

EDIT : 최소한 원시 XML을 직렬화하지 않고 XML을 직접 구문 분석 할 수 있습니다.

참고 : SoapDocumentMethod에서 "& & &"을 무시하십시오. 나는 그들의 가치를 삭제했다.

답변

0

내 문제의 해결책은 XML을 직렬화하는 프레임 워크가없는 것입니다.

[SoapDocumentMethod("&&&", RequestElementName = "SubscriptionQueryRequest", RequestNamespace = "&&&", ResponseNamespace = "&&&", Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)] 
[return: XmlAnyElement] 
public List<XmlNode> SubscriptionQuery(string SubscriberId, int SortType, bool SortDescending, string Service, string ReferenceID, string SubscriptionName, int StartingSequence, int ResultCount) 
{ 
    object[] results = this.Invoke("SubscriptionQuery", new object[] { 
      SubscriberId, 
      SortType, 
      SortDescending, 
      Service, 
      ReferenceID, 
      SubscriptionName, 
      StartingSequence, 
      ResultCount 
    }); 
    return ((List<XmlNode>)(results[0])); 
} 

는 목록에 대한 응답으로 모든 노드를 캐스팅하고 난 응답에 원과 프레임 워크를 할을하는 대신 그들에게 자신을 드 직렬화 각각의 노드를 걸릴 수 있습니다.

관련 문제