F# XML类型提供程序更改名称

5
使用 FSharp.Data(版本2.0.5)中的 XML 类型提供程序时,元素名称与模式中的名称不匹配。
例如,我的 XML 文件以以下内容开头:
<?xml version="1.0" encoding="utf-8"?>
<WebQuery><Results><Result><PrimaryID>105882365</PrimaryID><CONTACT_ADDRESS_LINE_1 /><CONTACT_ADDRESS_LINE_2 />

但是在F#中,我需要使用CONTACT_ADDRESS_LINE_1进行参考。
.ContactAddressLine1

我对类型提供程序有什么不理解的地方吗?为什么F#中的名称与模式中的元素名称不同?


考虑到其他元素的格式,CONTACT_ADDRESS_LINE_1 看起来很不协调。 - ChaosPandion
ChaosPandoin - 也许是这样,但我无法控制模式,因为它是由外部公司提供的。 - JonnyBoats
我需要阅读一些关于XML类型提供程序的资料。我不禁想知道它们是否在代表原始形式的元素上保留内部元数据。它们似乎可能会将名称格式化为更符合.NET约定的形式。 - ChaosPandion
1个回答

3

F# Data 为了提高可读性将属性名称转换为 PascalCase,但这对功能没有任何影响。如果您使用 ContactAddressLine1,仍然可以访问 CONTACT_ADDRESS_LINE_1 元素。


实际上,这确实会影响功能,因为 XML 元素(和属性)名称是区分大小写的,因此“location”和“Location”指的是不同的元素,并且在同一个模式中可能同时存在两者。 - JonnyBoats
在这种情况下,一个属性将被称为“位置”而另一个属性将被称为“Location2”。不用担心,实际的属性和元素名称不需要与生成的属性匹配。如果您想要,可以反编译生成的可执行文件以查看它是否使用了正确的名称。 - Gustavo Guerra
2
Gustavo - 我接受你的答案,认为这是设计上的问题。我不喜欢这个设计,但这不是讨论的地方。谢谢。 - JonnyBoats
考虑贡献一个静态参数,以禁用当前的命名。实际上,大多数人都喜欢它。 - forki23

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接