【发布时间】:2013-05-11 17:43:19
【问题描述】:
我正在尝试反序列化某些 API 提供的一段 XML。然而这个 API 是愚蠢的,例如,一个 bool 不是 true,而是 True。并且有一个元素
[XmlElement("Foo")]
public bool Foo { get;set; }
然后是匹配的 XML:
<...><Foo>True</Foo></...>
不起作用,因为 True 不是 bool 的有效表示(API 是用 Python 编写的,我认为这更宽容)。
有没有什么办法可以在我的属性Foo上放一些属性对系统说:遇到这个元素,通过这个转换器类放?
编辑:
XML 很大,而且大多数都是愚蠢的,不能直接转换的对象,比如234KB,我需要将其解析为确切的值。
我需要为它们中的每一个写一个包装器属性吗?
【问题讨论】:
-
结构是否足够复杂以至于你真的需要使用内置的 XML 序列化?只能用手做吗? LINQ to XML 通常使这变得非常简单。
-
在python中,true区分大小写,必须大写。
-
@Jon 好点,但我想知道是否有可能在不使用自定义类型(而不是 bool)的情况下实现我想要的方式。编写自定义转换器类没有问题。
-
我认为 C# 可以将 'True' 解析为布尔值。你确定这是它不起作用的原因吗?
标签: c# .net xml deserialization