[英]Why deserialize XML into Object return null value?
I have a XML string like that:我有一个这样的 XML 字符串:
<?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>
I want to deserialize it into an object, so I created this class:我想将它反序列化为一个对象,所以我创建了这个类:
[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; }
}
and then use this code to deserialize:然后使用此代码反序列化:
var deserializer = new XmlSerializer(typeof(UserInfo));
using (var stream = new StringReader(result))
{
UserInfo userInfo = (UserInfo)deserializer.Deserialize(stream);
return userInfo;
}
return value was not null, but all its properties was null value:返回值不为空,但它的所有属性都是空值:
<result vmeet_id="0" begin_date="0001-01-01T00:00:00" expiry_date="0001-01-01T00:00:00"/>
what is wrong here?这里有什么问题? Did I forgot something?我忘记了什么吗?
Thank you.谢谢你。
In your XML, all your 'vmeet' 'begin_date' are all elements
, but in your UserInfo Class, you declare them as XMLAttribute
.在您的 XML 中,您所有的 'vmeet' 'begin_date' 都是elements
,但在您的 UserInfo 类中,您将它们声明为XMLAttribute
。 Try changing them to XMLElement
should help.尝试将它们更改为XMLElement
应该会有所帮助。
Use XmlDocument and Json to easily resolve result.使用 XmlDocument 和 Json 轻松解析结果。
public static T XmlToModel<T>(string xml)
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
string jsonText = JsonConvert.SerializeXmlNode(doc);
T result = JsonConvert.DeserializeObject<T>(jsonText);
return result;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.