我正在使用FSharp.Data.XmlProvider
。我的 xml 包含 <load>
节点。类型提供程序已经有一个静态 Load
用于加载实例的成员。我查找了有关如何让 XmlProvider 正确解释保留字的文档,但没有找到任何内容。有人可以提供有关如何生成我的 <load>
的见解吗?类型提供者中的节点?也许一个构造函数参数可以告诉 XmlProvider
我在 xml 中将保留字作为节点?
代码示例:
module LoadModule =
[<Literal>]
let loadSample = """
<root>
<loads>
<load loadid="1" value="12345" />
</loads>
</root>"""
type LoadXml = XmlProvider<loadSample>
let loadXml = LoadXml.Load("") // This is the static member Load. LoadXml does not contain a `Load` member for my node
let x = loadXml.Load // The instance does contain my Load member,
// but I need to construct a `Load []` using a static `Load` member
// because I need to set the values programmatically.
// Instance members are not settable.
最佳答案
您使用 new
关键字来解析正确的重载:
[<Literal>]
let loadSample = """
<root>
<loads>
<load loadid="1" value="12345" />
</loads>
</root>"""
type LoadXml = XmlProvider<loadSample>
let loadXml = LoadXml.Parse("...")
let x = LoadXml.Root (new LoadXml.Load(loadid=1,value=12345) )
另请注意,在示例中指示 loads
可以包含多个 load
项,LoadXml.Root
构造函数采用 Load
实例数组而不是单个实例:
[<Literal>]
let loadSample = """
<root>
<loads>
<load loadid="1" value="12345" />
<load loadid="2" value="23456" />
</loads>
</root>"""
type LoadXml = XmlProvider<loadSample>
let loadXml = LoadXml.Parse("...")
let x = LoadXml.Root [| new LoadXml.Load(loadid=1,value=12345); ... |]
关于xml - 如何在 FSharp.Data.XmlProvider 中使用保留字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57625841/