我正在尝试在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
最佳答案
您的弦未正确转义。它应该是:
node.InsertAfter("<Risk type=\"abc1\" methodology=\"xyz1\"/>")
编辑:显然当Brian发布他的答案时,我正在键入此内容。转义每个引号字符或按原样添加
@
都可以。关于f# - 编译错误提示值不是函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11436073/