是否可以覆盖 F# Xml 类型提供程序生成的类型定义?

Is it possible to override F# Xml type provider-generated type definition?

我正在使用 F# XML 类型提供程序来解析一组 XML 文件,并且将包含设置为 "no" 的国家/地区代码的元素解释为布尔值时会感到困惑.当然,我可以使用不同的值汇总自己的 XML 示例,但我想知道是否可以调整 XML 类型提供程序以调整某些类型定义。

另一种选择是从 XSD 模式加载类型,但看起来 XML 类型提供程序不支持这个,是吗?

您可以使用 InferTypesFromValues 参数来告诉类型提供程序它应该(或不应该)尝试从示例中的实际值推断基元的类型。例如:

type T1 = XmlProvider<""" <sample code="no" /> """, InferTypesFromValues=true>
T1.GetSample().Code // When enabled, 'Code' is Boolean

type T2 = XmlProvider<""" <sample code="no" /> """, InferTypesFromValues=false>
T2.GetSample().Code // When disabled, 'Code' is just a string

默认值为 true。为 XML 提供程序禁用此功能实质上意味着所有值都将作为字符串返回。对于 JSON,这有点不那么引人注目 - 因为 JSON 区分 123(数字)和 "123"(字符串)这样的值。

如您所述,目前不支持 XSD,但它是我们当然希望添加的功能之一(我什至不需要提及拉取请求超过欢迎 :-)).