2013-03-07 2 views
0

Как десериализовать вложенный xml с помощью DataContractSerializer в wcf? Пример xml is;Как десериализовать вложенный xml с помощью DataContractSerializer в wcf?

<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 как общий список класса PHONEBOOK. например: List<phoneBook>

Любое решение?

ответ

1

Простым способом поиска является создание подобной структуры в C#, а затем ее сериализация. Таким образом вы узнаете, что не так в xml. По моему опыту, вы пометили phoneBookList как Array в контракте, а затем пометили PhoneBook как элемент массива с правильными именами?

+0

Я пометил phoneBookList как DataMember –

+0

Посмотрите, что когда вы помечаете их атрибутом DataMemeber и не добавляете в него имя, то он сериализатор будет искать точное соответствие имени класса. Попробуйте добавить имя к атрибуту DataMember, например '[DataMember (Name =" phoneBook ")]' и посмотреть, работает ли это. – achakravarty