我正在尝试反序列化某些API提供的XML。然而,这个API是愚蠢的,例如,bool不是真的,而是True。并有一个元素
[XmlElement("Foo")]
public bool Foo { get;set; }
然后是匹配的XML:
<...><Foo>True</Foo></...>
不起作用,因为True不是bool的有效表示(API是用Python编写的,我认为更宽容)。
有没有办法在我的属性Foo
上添加一些属性来对系统说:当你遇到这个元素时,把它放到这个转换器类中?
编辑:
XML很大,而且大多数都是愚蠢的,而不是直接可转换的对象,比如234KB
,我需要将其解析为确切的值。
我是否需要为每个人写一个包装器属性?
答案 0 :(得分:1)
您可以使用支持属性:
public class MyModel
{
[XmlIgnore]
public bool Foo
{
get
{
return string.Equals(FooXml, "true", StringComparison.OrdinalIgnoreCase);
}
set
{
FooXml = value.ToString();
}
}
[XmlElement("Foo")]
public string FooXml { get; set; }
}