rad*_*rad 2 .net xml csv f# type-providers
我正在使用Fsharp脚本,并试图找到一种将数据从XML文件转换为CSV文件的方法。
我首先从使用typeprovider读取XML文件开始,之后我想要使用ServiceStack.Text序列化程序,但是当然数据还没有准备好,因为我还有XmlProvider。
我可能从错误的角度解决了这个问题。有见识吗?
如果要使用XML和CSV类型提供程序,则可以定义两种类型-一种用于基于样本表示输入,另一种用于基于显式架构表示输出。
假设test.xml看起来像这样:
<data>
<item foo="1" bar="2" />
<item foo="1" bar="3" />
</data>
Run Code Online (Sandbox Code Playgroud)
然后,您可以定义以下类型。对于Output类型,我们说的是输出CSV的列名及其类型:
open FSharp.Data
type Input = XmlProvider<"c:/temp/test.xml">
type Output = CsvProvider<"foo (int), bar (int)">
Run Code Online (Sandbox Code Playgroud)
现在,您可以将输入数据转换为输出行,将它们添加到新的空CSV文件中,然后使用SaveToString或使用just 将其保存到字符串中Save:
let newRows =
[ for r in Input.GetSample().Items ->
Output.Row(r.Foo, r.Bar) ]
Output.GetSample().Append(newRows).SaveToString()
Run Code Online (Sandbox Code Playgroud)