2016-06-25 6 views
0

アプリでは、xmlのユーザーのプレイリストに関する情報をvk serverから返します。ここでアプリのスローInvalidOperationexceptionこのxmlドキュメントをリストに逆シリアル化する方法

var result = (PlayList)serializer.Deserialize(reader); 

のDTO:

public class PlayList 
{ 
    [XmlElement("audio")] 
    public List<Song> Audio { get; set; } 

    public PlayList() 
    { 
     Audio = new List<Song>(); 
    } 
} 

public class Song 
{ 
    [XmlElement(ElementName ="id")] 
    public int Id { get; set; } 

    ... 

    [XmlElement(ElementName ="genre_id")] 
    public int Genre_id { get; set; }`` 
} 

しかし、私のコードの作品は、私は、私はそれを動作させるために私のコードに変更する必要がありますどのような

<response> 
<count>156</count> 
... 
<response> 
and <items list="true"> -> <items> 

XMLFILEからこの3行を削除?

var serializer = new XmlSerializer(typeof(PlayList), new XmlRootAttribute("items")); 
    using (var stringReader = new StringReader(xml)) 
    using (var reader = XmlReader.Create(stringReader)) 
    { 
     var result = (PlayList)serializer.Deserialize(reader); 
     Console.WriteLine(result.Audio[1].Title); 
    } 

これはxmlの例です。 このXMLドキュメントをどのように逆シリアル化しますか?あなたはそれがその配列を知らせる必要があり

var xml = 
@"<?xml version="1.0" encoding="utf-8"?> 
<response> 
<count>156</count> 
<items list="true"> 
<audio> 
    <id>456239034</id> 
    <owner_id>181216176</owner_id> 
    <artist>Oh Wonder</artist> 
    <title>Technicolour Beat</title> 
    <duration>179</duration> 
    <date>1465249779</date> 
    <url>http://cs613222.vk.me/u285269348/audios/4ae051b98797.mp3?extra=MS3dvwutPkFx7k8rQdV3Szuh7cSwLkRcS_KpPbO9DXviMFLNNgkDAmZFWdIueioL3dDgdPUc7rch0V81KgOHYaTTSampaRcljxrJcytJYImZssivVP7DigKdcxaLoALeUatAhuHk5gXQ7TY</url> 
    <lyrics_id>235824304</lyrics_id> 
    <genre_id>1001</genre_id> 
</audio> 
<audio> 
    <id>456239033</id> 
    <owner_id>181216176</owner_id> 
    <artist>Mikky Ekko</artist> 
    <title>We Must Be Killers (Волчонок/Teen Wolf/2х08) </title> 
    <duration>195</duration> 
    <date>1465249755</date> 
    <url>http://cs521610.vk.me/u14558277/audios/c2daca7b2b6f.mp3?extra=z9VPdKf6v- n7zkIfZ_6ej-RZSjlIjAr_qYmVp4F-zI1Z3ZXgVtOUElovlOiSOgSuKbFC0e0ahac8XU-AxNtfEYYPe5gcejSotr84mHi0LQ2L-b0BPWP2cYn5Yy44YN4FLPNKq0Ow8vMKFn0</url> 
    <lyrics_id>26311225</lyrics_id> 
</audio> 
</items> 
</response>"; 

答えて

0

は、私はあなただけXmlReaderで不要なノードをスキップすることができtypeof(PlayList[])代わり

0

typeof(PlayList)のを使用して考えます。

using (var reader = XmlReader.Create(stringReader)) 
{ 
    reader.ReadToFollowing("items"); 

    var result = (PlayList)serializer.Deserialize(reader); 
関連する問題