2014-04-02 108 views
2

在這兩個功能等效的XML文件上使用XML類型提供程序會給XML類型提供程序提供不同的結果。F#XML類型提供程序和可選類型

XML文件1:

<?xml version="1.0" encoding="utf-8"?> 
<params> 
    <mode > 
     <reg >0</reg>   
    </mode> 
    <mode > 
     <reg >1.7976931348623157E+308</reg>   
    </mode> 
    <mode></mode> 
</params> 

XML文件2:

<?xml version="1.0" encoding="utf-8"?> 
<params> 
    <mode>   
    </mode> 
  <mode > 
    <reg >0</reg> 
  </mode> 
  <mode > 
    <reg >1.7976931348623157E+308</reg> 
  </mode> 
</params> 

注意,唯一的區別是空的「模式」是一個文件的末尾和的開始其他。

測試F#代碼如下所示:

type Test = XmlProvider<""".\test.xml"""> 
type Test2 = XmlProvider<""".\test2.xml"""> 

let xml = Test.GetSample() 
let list1 = [for mode in xml.Modes -> mode.Reg] 

let xml2 = Test2.GetSample() 
let list2 = [for mode in xml2.Modes -> mode.Reg] 

列表1具有類型 「選項<浮動>列表」 如你所願。但是list2的類型是「float list」,這是不正確的,並導致運行時異常。

爲什麼會發生這種情況,我該如何避免此問題?

回答

1

這是固定的問題提交的最新F#數據版本

相關問題