3

我正在尝试使用FSharp.Data第三方库,但The type 'XmlProvider' is not definedXmlProvider课堂上出现错误。

namespace KMyMoney

open FSharp.Data

  module Read =

    let xml = File.ReadAllText("KMyMoneySampleFile.xml")
    type KMyMoneySource = XmlProvider<xml>

我正在使用 NuGet 来获取库。库是“FSharp.Data 1.1.8”

当我键入时,FSharp.Data.给出了四个选项:CsvFreebaseOperatorsJsonRuntimeImplementation

我错过了什么吗?我对 F# 比较陌生。所以,很抱歉这个简单的问题。我在 GitHub 上查看过,但没有看到任何提及此问题的内容。我正在 F# 中创建一个库。

4

3 回答 3

5

之间<>Sample参数是类型提供者的参数,它必须是编译时常量。该示例用于推断 xml 的结构。

试试这个:

namespace KMyMoney

open FSharp.Data

module Read =

    type KMyMoneySource = XmlProvider<"KMyMoneySampleFile.xml">

然后做

let xml = KMyMoneySource.Load("KMyMoneySampleFile.xml")

或者,如果您正在读取与 XmlProvider 示例参数相同的文件,只需执行以下操作:

let xml = KMyMoneySource.GetSample() 

请注意,Type Providers 是 F# 3.0 的一项功能,因此这只适用于 VS2012 或更高版本。如果你使用的是 VS2010,你只会得到一堆语法错误。

于 2013-07-15T12:27:15.703 回答
3

数据必须在编译时可用,这是通过将文件引用放在尖括号中来实现的(请注意,它是包含文件路径的字符串文字,而不是包含数据的字符串绑定)。您还可以通过将包含格式的字符串文字放在括号中来实现此目的:

type Stocks = CsvProvider<"../docs/MSFT.csv">

let csv = new CsvProvider<"1,2,3", HasHeaders = false, Schema = "Duration (float<second>),foo,float option">()

请参阅此处了解更多信息。

于 2013-07-13T02:20:06.890 回答
1

看看这个链接。基本上,您还需要添加System.Xml.Linq.dll作为对项目的参考。

于 2013-07-13T12:38:59.273 回答