【发布时间】:2015-07-06 17:57:50
【问题描述】:
我一直想知道是否可以这样做。
如果 XML 响应包含需要映射到枚举的不正确值,这将是一个很大的帮助。
我正在处理的具体情况是预期值有一个尾随空格,而枚举期望它没有。
XML:
<Foo>
<Bar>EnumValue </Bar>
</Foo>
枚举:
public enum MyEnum
{
[XmlEnum("EnumValue")]
EnumValue
}
类:
public class Foo
{
[XmlElement("Bar")]
public MyEnum myEnum { get; set; }
}
我研究过使用自定义属性(而不是“XmlEnum”)来修剪值,但在反序列化期间似乎没有达到。
有没有办法在反序列化之前/期间修剪 XML 值(如果需要),以便可以将值正确映射到枚举?
-
我应该补充一点,我无法对 XML 的发送方式进行任何更改,我只能处理响应。
此外,只需将属性参数更改为 [XmlEnum("EnumValue ")] 即可解决问题,但这并不令人满意,因为 XML 值可能会在以后更改。
【问题讨论】:
-
您可以使用自定义反序列化器在反序列化时“清理”数据。要么是这样,要么是效率极低的 string.replace 在反序列化之前剥离 XML 中的所有空格(我可能会被社区绞死,甚至建议这种替代方案)。
-
你能展示你用来反序列化的代码吗?这可能就像添加 .Trim() 一样简单
-
获取更多信息请输入代码
-
抱歉,我手头没有反序列化代码。虽然,这只是将 XML 响应传递到 deserialize() 方法的标准操作。忽略低效率,去掉所有空格是行不通的,因为大多数 XML 值都需要它们的空格(即大量文本)。
标签: c# xml serialization enums