WCF DataContractSerialzer xml以对象不完整的结果

| 我正在创建一个wcf包装器服务,该服务从另一个Web服务返回xml。 我要注意的是,并非源中的所有xml都已序列化到我的对象。 这是源xml:
<?xml version=\"1.0\" standalone=\"yes\"?>
<methodResponse>
    <requestId>234843080</requestId>
    <errorCode>0</errorCode>
    <errorText></errorText>
    <processingTime>00:00:00.234</processingTime>
    <results>
        <resultCode>0</resultCode>
        <resultText></resultText>
        <resultCount>1</resultCount>
        <totalResultCount>1</totalResultCount>
        <result>           
            <contactId>123</contactId>
            <sourceFolderId>3443</sourceFolderId>
            <contactState>4</contactState>
            <contactStateSortOrder>3</contactStateSortOrder>            
            <contactType>person</contactType>
            <displayName>Bond, James</displayName>            
            <office>unknown</office>
            <department></department>
            <changeDate></changeDate>
            <firstName>James</firstName>
            <middleName></middleName>
            <lastName>Bond</lastName>            
            <jobTitle>Spy</jobTitle>            
            <ape>
                <address type=\'Street\' typeId=\'1\' relationship=\'Business\' relationshipId=\'1\'>
                    <addressLine></addressLine>                    
                    <city></city>
                    <state></state>
                    <postalCode></postalCode>                                                            
                </address>
                <phone type=\'Phone\' typeId=\'1\' relationship=\'Business\' relationshipId=\'1\'>
                    <phoneNumber></phoneNumber>
                    <description/>
                    <formattedPhone></formattedPhone>
                </phone>         
            </ape>
        </result>
    </results>    
</methodResponse>
WCF包装器服务:
  [DataContract(Name=\"methodResponse\", Namespace = \"\")]
    public partial class methodResponse {

    [DataMember]
    public int errorCode {
        get;
        set;
    }

    [DataMember]
    public string errorText {
        get;
        set;
    }

    [DataMember]
    public string requestId
    {
        get;
        set;
    }

    [DataMember]
    public methodResponseResults[] results
    {
        get;
        set;
    }
}

[DataContract(Namespace = \"\")]
public partial class methodResponseResults
{
    [DataMember]
    public string resultCode {
        get;
        set;
    }

    [DataMember]
    public string resultText {
        get;
        set;
    }

    [DataMember]
    public string resultCount {
        get;
        set;
    }

    [DataMember]
    public string totalResultCount {
        get;
        set;
    }

    [DataMember]
    public methodResponseResultsResult[] result {
        get;
        set;
    }
}

[DataContract(Namespace=\"\")]
public partial class methodResponseResultsResult {

public string contactId
        {
            get;
            set;
        }
    public string displayName
    {
        get;
        set;
    }
}



  [ServiceContract]    
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
    public class WcfWrapperService
    {

 public Response GetXml()
        {    
            string uri = \"\"; // uri to source web service

            var dataContractSerializer = new DataContractSerializer(typeof(methodResponse));

                using (XmlReader reader = XmlReader.Create(uri))
                {
                    var result = (methodResponse)dataContractSerializer.ReadObject(reader);
//result object looks like:    
                //result.errorCode = 0;
                //result.errorText = null;
                //result.requestId = 234843080;
                //result.results = methodResponseResults[0];
                }


    // return Response object
                }
        }
有errorCode,errorText,requestId值,但没有结果。     
已邀请:
跳出来的第一件事是您正在尝试反序列化包含属性的合同。
DataContractSerializer
有一些限制,其中之一是它只能序列化/反序列化元素。为了正确处理此架构,您将需要使用
XmlSerializer
。     
您没有在
DataMember
属性上为
Order
属性设置任何值。这意味着将按照字母顺序处理元素,这很可能不是您想要的。您必须显式设置“ 4”以确保它与将要处理的文档的架构匹配。如果实例文档中可能包含或不包含任何元素,则可能还需要设置“ 7”。     

要回复问题请先登录注册