1
deserialize하려고하는 다음과 같은 xml 파일이 있습니다.XML 파일을 deserialize 할 수 없습니다.
<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>
현재이 내가 모델로있는 것입니다 :
[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; }
}
을하지만 코드 아래 사용하여 직렬화하려고 할 때, 그것은 구문 분석 된 권리를 얻을하지 않습니다, 나는의 resultCode이 표시되지 않는 즉, 노래 목록도 없습니다 (오류는 없습니다).
XmlSerializer s = new XmlSerializer(typeof(Response), new XmlRootAttribute("info"));
Response response = (Response)s.Deserialize(data.CreateReader());
모든 힌트가 있습니까?
제목 끝에 "C# 4.0"과 같은 것을 추가하지 마십시오. 그것이 바로 태그가있는 것입니다. 또한 귀하의 질문은 특정 버전의 C#에서만 발생하는 것이 아니므로 구체화 할 필요가 없습니다. 버전. –
데이터 개체가 무엇입니까? .CreateReader는 무엇을합니까? 그것은 XmlTextReader를 반환합니까? –
내가 제공 할 수있는 유일한 충고는 조각으로 조각을 비 직렬화하고 시도하는 것입니다. 한 번에 많은 작업을 수행하면 작동하지 않는 것을 추적하기가 어려울 것입니다. 어떻게 내가 어쨌든 과거에 비슷한 문제에 접근했는지. – DukeOfMarmalade