Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从SOAP响应获取附加数据_C#_Xml_Soap - Fatal编程技术网

C# 从SOAP响应获取附加数据

C# 从SOAP响应获取附加数据,c#,xml,soap,C#,Xml,Soap,我正在从一个web服务接收下面的SOAP响应 <soap:Body> <SubscriptionQueryResponse> <Subscriptions> <Subscription></Subscription> <Subscription></Subscription> </Subscriptions> <TotalCount>

我正在从一个web服务接收下面的SOAP响应

<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] ) );
}