将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 (2),那么我希望得到 enumType 的“Away”。但是,执行 this.Winner = (HomeOrAwayTeamType)int.parse(value); 时我得到 enumType 的“NA”如何得到正确的 enumType 对应 xml 值的值。 对不起。我是英语初学者。因为我的快递不够。 我解决了这个问题。我的错误..哈哈这是删除'TextXml'非常感谢。

以上是关于将xml反序列化为c#中的类时从XmlTextAttribute获取int值的主要内容,如果未能解决你的问题,请参考以下文章

C# Xmlserializer 将列表反序列化为 0 而不是 null

需要帮助将 XML 文件反序列化为对象 C#

将 Web 服务 API 中的 XML 字符串反序列化为 C# 对象

C# XML 反序列化为一张表中的 DataSet

如何将简单的类序列化/反序列化为 XML 并返回

将 ODATA xml 序列化/反序列化为 C# 对象