Поэтому у меня есть XML, который выглядит следующим образом:Невозможно? Как десериализовать это с помощью DataContractSerializer?
<a>
<b c="1" ></b>
<b c="2" ></b>
<b c="3" ></b>
<b c="4" ></b>
</a>
Я десериализация это на WP7, используя DataContractSerializerdo это.
Я сталкиваюсь с некоторыми мнениями о том, что это невозможно сделать без каких-либо трюков, таких как включение этого XML в дополнительные теги, чтобы нажать < a> вниз от корневого уровня.
Это правда?
По вашему запросу я добавил некоторый код
Классы:
[KnownType(typeof(B))]
[DataContract(Namespace = "")]
public class A:List<B>
{
[DataMember]
public List<B> B
{
List<B> _b = new List<B>();
get { return _b; }
set { _b = value; }
}
}
[DataContract(Namespace = "")]
public class B
{
[DataMember]
public string c = "foo";
}
десериализация:
var serializer = new DataContractSerializer(typeof(A));
var o = serializer.ReadObject(SomeResponseStream);
И многие, многие другие вариации этого.
Кстати - такого расположения классов будет сериализовать в XML следующим образом:
<a>
<b>
<b c="1" ></b>
<b c="2" ></b>
<b c="3" ></b>
<b c="4" ></b>
</b>
</a>
Уведомление дополнительный нежелательный уровень < б>
Вы не можете использовать атрибуты с 'DataContractSerializer': http://stackoverflow.com/questions/591907/how-can-you-control-net-datacontract-serialization-so-it-uses-xml -attributes-in Вместо этого следует использовать LINQ to XML. – MarcinJuraszek
@ I4V Я думаю, что это невозможно в Windows Phone 7. –
@HighCore: доступно: http://stackoverflow.com/questions/5119312/windows-phone-7-and-system-xml-linq-library – NotMe