将xml反序列化为c#中的类时从XmlTextAttribute获取int值
Posted
技术标签:
【中文标题】将xml反序列化为c#中的类时从XmlTextAttribute获取int值【英文标题】:get int value from XmlTextAttribute when deserialize xml to class in c# 【发布时间】:2016-10-25 04:27:30 【问题描述】:xml如下:
<Item>
<Winner>2</Winner>
</Item>
对于我的类定义,我有以下内容:
公共枚举 HomeOrAwayTeamType Home =1,Away =2,Draw =3,NA = 0; 类项目 [Xml忽略] 公共虚拟 HomeOrAwayTeamType 获胜者 得到;放; [XmlElement(ElementName = "Winner"), XmlText] 公共虚拟字符串 WinnerSerializer 得到 返回 this.Winner.ToString(); 放 //从 HomeOrAwayTeamType 中获取 'Away' this.Winner = (HomeOrAwayTeamType)2; //好的 this.Winner = (HomeOrAwayTeamType)Convert.ToInt32("2"); //好的 this.Winner = (HomeOrAwayTeamType)int.parse("2"); //好的 //从 HomeOrAwayTeamType 中获取 'NA' this.Winner = (HomeOrAwayTeamType)Convert.ToInt32(value); //失败 this.Winner = (HomeOrAwayTeamType)int.parse(value); //失败 字符串 xml = ""; //xml代码 项目模型 = 默认(项目); 使用 (var reader = XmlReader.Create(new StringReader(xml))) var serializer = new XmlSerializer(typeof(Item)); model = (Item)serializer.Deserialize(reader);嗨,伙计们.. 如何从 XmlTextAttribute 中获取 int 值?
请帮忙~
【问题讨论】:
见:nodogmablog.bryanhogan.net/2013/12/deserializing-to-an-enum 非常感谢,还没有解决。 【参考方案1】:您的 xml 字符串为空。这对我有用:
string xml = "<Item><Winner>2</Winner></Item>"; //xml code
this.Winner
设置为 Away
【讨论】:
谢谢.. 但还没有从 enumType 获得 'Away' 值 你得到了什么?你有例外吗?你在这里说故障转移是什么意思this.Winner = (HomeOrAwayTeamType)int.parse(value); //fail
例如,在 xml 中,如果“Winner”元素的 TextNode 值为 2 (以上是关于将xml反序列化为c#中的类时从XmlTextAttribute获取int值的主要内容,如果未能解决你的问题,请参考以下文章
C# Xmlserializer 将列表反序列化为 0 而不是 null