2016-02-18 107 views
1

我正在玩Fsharp腳本並試圖找到將數據從XML文件轉換爲CSV文件的方式。在Fsharp中將XML文件轉換爲CSV文件

我開始通過使用typeprovider讀取XML文件,之後我想要的是使用ServiceStack.Text序列化器,但當然數據還沒有準備好,因爲我仍然有一個XmlProvider。

我可能從錯誤的方面來評估問題。任何見解?

回答

4

如果您想要使用XML和CSV類型的提供程序,您可以定義兩種類型 - 一種根據示例表示輸入,一種根據顯式模式表示輸出。

假設test.xml看起來是這樣的:

<data> 
    <item foo="1" bar="2" /> 
    <item foo="1" bar="3" /> 
</data> 

然後,您可以定義爲以下類型。對於Output類型,我們在說什麼是輸出CSV列的名字和類型:

open FSharp.Data 

type Input = XmlProvider<"c:/temp/test.xml"> 
type Output = CsvProvider<"foo (int), bar (int)"> 

現在,你可以把數據輸入到輸出行,將它們添加到一個新的空CSV文件並保存它使用SaveToString或使用Save的文件:

let newRows = 
    [ for r in Input.GetSample().Items -> 
     Output.Row(r.Foo, r.Bar) ] 

Output.GetSample().Append(newRows).SaveToString()