2013-03-07 78 views
0

如何在wcf中使用DataContractSerializer反序列化嵌套的xml? 示例xml是;如何在wcf中使用DataContractSerializer反序列化嵌套的xml?

<smsPaidPhoneBookSearchResponse xmlns="http://callturksvc.alfion.com.tr"> 
    <webServiceResponseType>SUCCESS</webServiceResponseType> 
    <clientQueryId>112628650000001078</clientQueryId> 
    <phoneBookList> 
     <phoneBook> 
      <cityName>İstanbul</cityName> 
      <districtName>Beşiktaş</districtName> 
      <firstName>Şuayp</firstName> 
      <lastModifiedDateTime>2013-03-06T16:05:59.508+02:00</lastModifiedDateTime> 
      <lastName>Çiçek</lastName> 
      <phoneBookTypeEnumValue>TURKCELL</phoneBookTypeEnumValue> 
      <phoneNumberText>5353572115</phoneNumberText> 
     </phoneBook> 
     <phoneBook> 
      <cityName>İstanbul</cityName> 
      <districtName>Beşiktaş</districtName> 
      <firstName>Şuayp</firstName> 
      <lastModifiedDateTime>2013-03-06T16:05:59.510+02:00</lastModifiedDateTime> 
      <lastName>Çiçek</lastName> 
      <phoneBookTypeEnumValue>TURKCELL</phoneBookTypeEnumValue> 
      <phoneNumberText>5359571655</phoneNumberText> 
     </phoneBook> 
    </phoneBookList> 
</smsPaidPhoneBookSearchResponse> 

我成功地获取这些值(webServiceResponseType,clientQueryId),但我不能让phoneBookList的电话簿类的泛型列表。例如:List<phoneBook>

任何解决方案?

回答

1

找到一个简单的方法是在C#中创建一个类似的结构,然后序列化它。这样你就会知道xml中的错误。根据我的经验,您是否在合同中将phoneBookList标记为数组,然后将PhoneBook标记为具有正确名称的数组元素?

+0

我将phoneBookList标记为DataMember – 2013-03-16 08:46:38

+0

请注意,当您使用DataMemeber属性标记它们并且不为其添加名称时,它将序列化程序查找类名称的完全匹配。尝试向DataMember属性添加名称,如 '[DataMember(Name =“phoneBook”)]' 并查看是否有效。 – achakravarty 2013-05-02 04:35:10

相关问题