0
我有一個XML字符串這樣的:爲什麼將XML反序列化爲Object返回null值?
<?xml version="1.0" ?>
<result>
<vmeet_id>7121</vmeet_id>
<username>MT_Hue_QuangBinh_QuangTri</username>
<email></email>
<begin_date>2010-04-21 08:53</begin_date>
<expiry_date>2010-12-21 00:00</expiry_date>
<point></point>
<info>OK</info>
</result>
我想將它反序列化爲一個對象,所以我創造了這個類:
[Serializable]
[XmlRoot(ElementName = "result", IsNullable = false)]
public class UserInfo
{
[XmlAttribute("vmeet_id")]
public int UserID { get; set; }
[XmlAttribute("username")]
public string Username { get; set; }
[XmlAttribute("email")]
public string Email { get; set; }
[XmlAttribute("begin_date")]
public DateTime BeginDate { get; set; }
[XmlAttribute("expiry_date")]
public DateTime ExpiryDate { get; set; }
[XmlAttribute("point")]
public string Point { get; set; }
[XmlAttribute("info")]
public string Info { get; set; }
}
,然後使用此代碼進行反序列化:
var deserializer = new XmlSerializer(typeof(UserInfo));
using (var stream = new StringReader(result))
{
UserInfo userInfo = (UserInfo)deserializer.Deserialize(stream);
return userInfo;
}
返回值不爲null,但其所有屬性爲空值:
<result vmeet_id="0" begin_date="0001-01-01T00:00:00" expiry_date="0001-01-01T00:00:00"/>
這裏有什麼問題?我忘了什麼嗎?
謝謝。
附註:如果您有一塊XML;您可以使用xsd.exe命令行工具生成XML模式,並在第二步中使用該XML中的C#類,該類將能夠將該XML反序列化爲C#類。只是一個想法...而不是很多小時的手工編碼 - 只需調用xsd.exe兩次 - 就完成了! – 2010-11-23 06:18:28