J'ai un fichier XML comme celui-ci que j'essaye de désérialiser.Impossible de désérialiser un fichier xml
<info>
<result resultCode="0000"><![CDATA[操作成功]]></result>
<songlist>
<song>
<id>63672</id>
<name><![CDATA[红玫瑰]]></name>
<singer id="1620"><![CDATA[陈奕迅]]></singer>
<album id="22056"><![CDATA[认了吧]]></album>
<remark><![CDATA[]]></remark>
<uploadinguser><![CDATA[]]></uploadinguser>
<collectinguser><![CDATA[]]></collectinguser>
<source>
<link id="3441591" filesize="3842715" format="mp3"><![CDATA[http://space6.j.cn/olympic/edit/672/63672-3842715.mp3]]></link>
<link id="3435011" filesize="3843133" format="mp3"><![CDATA[http://f8.wretch.yimg.com/satyedhome/32764/1165646407.mp3]]></link>
<link id="3434519" filesize="3842715" format="mp3"><![CDATA[http://space0.j.cn/olympic/edit/672/63672-3842715.mp3]]></link>
</source>
</song>
<song>
<id>67228</id>
<name><![CDATA[光荣]]></name>
<singer id="106"><![CDATA[BOBO]]></singer>
<album id="22523"><![CDATA[光荣]]></album>
<remark><![CDATA[]]></remark>
<uploadinguser><![CDATA[]]></uploadinguser>
<collectinguser><![CDATA[]]></collectinguser>
<source>
<link id="3437626" filesize="5106906" format="mp3"><![CDATA[http://blog.heinekenf1.net/music/gr.mp3]]></link>
<link id="3441621" filesize="3394663" format="mp3"><![CDATA[http://space6.j.cn/olympic/edit/228/67228-3394663.mp3]]></link>
<link id="3090938" filesize="3395499" format="mp3"><![CDATA[http://space5.j.cn/olympic/convert/228/67228-3395499.mp3]]></link>
</source>
</song>
<song>...</song>
<song>...</song>
<song>...</song>
<song>...</song>
<song>...</song>
<song>...</song>
</songlist>
</info>
Actuellement c'est ce que j'ai comme modèle:
[XmlRoot("info")]
public class Response
{
[XmlElement("result")]
public Result Results { get; set; }
[XmlArray("songlist")]
[XmlArrayItem("song", typeof(Song))]
Song[] SongList { get; set; }
}
public class Result
{
[XmlAttribute("resultCode")]
public int ResultCode { get; set; }
}
public class Song
{
[XmlElement("name")]
public string Name { get; set; }
[XmlElement("singer")]
public string Artist { get; set; }
[XmlElement("album")]
public string Album { get; set; }
[XmlArray("source")]
[XmlArrayItem("link", typeof(Link))]
public Link[] Sources { get; set; }
}
public class Link
{
[XmlAttribute("filesize")]
public int FileSize { get; set; }
[XmlAttribute("format")]
public string Format { get; set; }
[XmlText]
public string URI { get; set; }
}
Mais quand j'ai essayé de désérialiser en utilisant le code ci-dessous, il ne soit pas bien analysé, à savoir que je ne vois pas le resultCode ni la liste des chansons (pas d'erreur cependant).
XmlSerializer s = new XmlSerializer(typeof(Response), new XmlRootAttribute("info"));
Response response = (Response)s.Deserialize(data.CreateReader());
Une indication?
Veuillez ne pas ajouter des choses comme "C# 4.0" à la fin de vos titres. C'est ce que les tags sont pour. De plus, votre question n'est pas spécifique à une version particulière de C#, vous n'avez donc pas besoin de spécifier. la version. –
qu'est-ce que vous objet de données? Que fait .CreateReader? Est-ce qu'il retourne un XmlTextReader? –
Le seul conseil que je puisse vous offrir est d'essayer de le désérialiser pièce par pièce, vous faites beaucoup en une fois et il sera difficile de savoir ce qui ne fonctionne pas. C'est comme ça que j'ai abordé des problèmes similaires dans le passé de toute façon. – DukeOfMarmalade