Deserializing XML in Object using DataContractSerializer



I have the following xml:



<ArrayOfString>
<stringValues>
<stringvalue>teste1</stringvalue>
<stringList>
<stringText>stringList1</stringText>
</stringList>
</stringValues>
</ArrayOfString>


My contract is as following:



[KnownType(typeof(StringList))]
[DataContract(Name = "stringValues", Namespace = "")]
public class StringValues
{

[DataMember(Name="stringvalue",Order=1)]
public string stringvalue { get; set; }

[DataMember(Name="stringList",Order=2)]
public StringList stringList { get; set; }
}

[CollectionDataContract(ItemName = "stringText")]
public class StringList : List<string>
{

}


And the code used to deserialize is:



var testexml = @"<ArrayOfString>
<stringValues>
<stringvalue>teste1</stringvalue>
<stringList>
<stringText>stringList1</stringText>
</stringList>
</stringValues>
</ArrayOfString>";

XmlDictionaryReader stringsReader = XmlDictionaryReader.CreateDictionaryReader(XmlReader.Create(new StringReader(testexml)));
DataContractSerializer ArrayOfString = new DataContractSerializer(typeof(List<StringValues>), "ArrayOfString", "");
var strings = ArrayOfString.ReadObject(stringsReader);


When i run it the stringList property should have one item, but instead it has zero items. I belive, there is something wrong in my contract. Can anyone help?


Thanks in advance!


No comments:

Post a Comment