C# 从SOAP响应获取附加数据
我正在从一个web服务接收下面的SOAP响应C# 从SOAP响应获取附加数据,c#,xml,soap,C#,Xml,Soap,我正在从一个web服务接收下面的SOAP响应 <soap:Body> <SubscriptionQueryResponse> <Subscriptions> <Subscription></Subscription> <Subscription></Subscription> </Subscriptions> <TotalCount>
<soap:Body>
<SubscriptionQueryResponse>
<Subscriptions>
<Subscription></Subscription>
<Subscription></Subscription>
</Subscriptions>
<TotalCount>2</TotalCount>
<ResultCount>2</ResultCount>
<StartingSequence>0</StartingSequence>
</SubscriptionQueryResponse>
</soap:Body>
正如您所看到的,我已经返回订阅了。订阅列表位于返回数组的索引0中。我还想将Total Count作为返回数组的索引1返回,但return-XmlArray语句只返回订阅并自动强制转换它们
编辑:至少,我希望原始XML没有序列化,我可以自己解析它
注意:忽略SoapDocumentMethod中的&&&。我删除了它们的值以供显示。我的问题的解决方案是不让框架序列化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] ) );
}
这会将响应中的所有节点强制转换为一个列表,然后我可以获取响应中所需的每个节点,并自己对它们进行反序列化,而不是让框架进行反序列化
[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] ) );
}