我正在尝试将 F# 用于我需要运行的实用程序作业之一。
从包含 xml 配置文件的目录中,我想识别包含特定节点的所有文件,并且在找到匹配项时,我想在同一个文件中插入一个兄弟节点。我已经编写了代码片段来识别所有文件,现在我有一个文件序列,我想对其进行迭代并搜索属性并在必要时附加。
open System.Xml.Linq
let byElementName elementToSearch = XName.Get(elementToSearch)
let xmlDoc = XDocument.Load(@"C:\\Some.xml")
xmlDoc.Descendants <| byElementName "Elem"
|> Seq.collect(fun(riskElem) -> riskElem.Attributes <| byElementName "type" )
|> Seq.filter(fun(pvAttrib) -> pvAttrib.Value = "abc")
|> Seq.map(fun(pvAttrib) -> pvAttrib.Parent)
|> Seq.iter(printfn "%A")
我想要做的是代替最后一个 printf,添加另一个类型"Elem"
的节点type = "abc2"
<Product name="Node" inheritsfrom="Base">
<SupportedElems>
<Elem type="abc" methodology="abcmeth" />
<Elem type="def" methodology="defmeth" />
</SupportedElems>
</Product>
结果 XML:
<Product name="Node" inheritsfrom="Base">
<SupportedElems>
<Elem type="abc" methodology="abcmeth" />
<Elem type="abc2" methodology="abcmeth" /> <!-- NEW ROW TO BE ADDED HERE -->
<Elem type="def" methodology="defmeth" />