使用"混合"进行XML反序列化类型

时间:2014-09-11 16:57:47

标签: c# xml serialization

我正在尝试从Web服务中使用XML。我最初开始使用LINQ to XML,但在了解了序列化/反序列化后,我决定尝试反序列化XML。

虽然我还没有编写反序列化代码,但我已经意识到由于Web服务的工作原理,我不能总是知道为某些元素返回的实际类型。

例如,考虑这个XML(http://api.wunderground.com/api/d36f54198ebbb48c/conditions/q/England/London.xml

<dewpoint_string>52 F (11 C)</dewpoint_string> 
<dewpoint_f>52</dewpoint_f>   
<dewpoint_c>11</dewpoint_c>    
<heat_index_string>NA</heat_index_string>
<heat_index_f>NA</heat_index_f>
<heat_index_c>NA</heat_index_c>

现在,通常假设所有数据都可用,那么诸如“heat_index_f”之类的元素将是十进制/双精度。但是,当数据的某些部分不可用时,服务将在元素中具有字符串值“NA”。我反序列化为一个对象,它具有每个元素的属性。 EG:string HeatIndexString; double HeatIndexF;显然,如果服务返回字符串NA,那么我将获得尝试将“NA”转换为double的运行时异常。

我该如何解决这个问题?是否有某种类型的属性我可以告诉解串器以某种方式使用这些“混合”类型?其他开发人员如何应对这种情况?

0 个答案:

没有答案