我想在F#實驗爲我們需要的實用工具之一,其中,我們想通過對XML文件的文件夾,蒐羅並尋找一個特定的標籤。如果找到,然後插入另一個類似的標籤。最後,輸出所有附加標籤已被插入的文件名。但是,我得到了一個編譯錯誤,其中我無法做出很多意義。編譯錯誤抱怨不是值的函數
let configFile =
Directory.GetFiles(Path.Combine("rootdir", "relativepath"), @"*.xml")
|> Seq.map(fun configFileName ->
let xmlNavigator = XPathDocument(configFileName).CreateNavigator()
let node = xmlNavigator.SelectSingleNode(@"Product/ABc[@type='xyz']")
match node with
| null -> "not configuration present"
| _ ->
let nodeAppender() = node.InsertAfter("<Risk type=""abc1"" methodology=""xyz1""/>")
let parentNode = node.SelectAncestors(XPathNodeType.Root, false)
parentNode.Current.OuterXml)
|> Seq.iter (printfn "%s")
的編譯錯誤是如下:
This value is not a function and cannot be applied
你使用'nodeAppender'地方? 'node.InsertAfter'在你調用'nodeAppender'函數之前不會有任何效果。 – pad 2012-07-11 15:45:44
這是一個非常好的點!我刪除了「let nodeAppender()=」,但似乎並不喜歡它。 – Codex 2012-07-11 15:49:56
您可以使用'|> ignore'或'let _ ='來聲明一個未使用的值。關鍵是你應該聲明一個值,而不是函數。 – pad 2012-07-11 15:51:50