1

XMLを更新しようとしていますが、formatting {indenting}を保持し、XmlDeclarationタグを挿入したくありません。私が適用している次のスニペット。

let UpdateAndSave (configFileName:string) = 
    let xmlDoc = XDocument.Load(configFileName)
    xmlDoc.XPathEvaluate(@"Product/SomeTag/Attr[@type='Value']") :?> _
    |> Seq.cast<XElement>
    |> Seq.iter (fun elem -> elem.AddAfterSelf(XElement.Parse("<Risk type=\"123\" methodology=\"Sample\"/>")))
    do 
        let xmlWriterSettings = new XmlWriterSettings()
        xmlWriterSettings.OmitXmlDeclaration = true
        xmlWriterSettings.Indent = true
        using(XmlWriter.Create(configFileName, xmlWriterSettings))(fun xmlFileWriter -> 
        xmlDoc.Save(xmlFileWriter)
        )   
    configFileName

更新後、xml形式は完全に失われ、「XmlDeclaration」タグも挿入されます。私は何かが足りないのですか?

4

1 に答える 1

4

F#では、=は比較演算子であり<-、は可変フィールドへの割り当てです。私はコンパイラがあなたの例では価値xmlWriterSettings.OmitXmlDeclaration = trueがないことを文句を言うことを期待しています。unit

さらに、doブロックは冗長であるように見え、簡潔usingにするために置き換えることができます。use

let xmlWriterSettings = new XmlWriterSettings()
xmlWriterSettings.OmitXmlDeclaration <- true
xmlWriterSettings.Indent <- true
use xmlWriter = XmlWriter.Create(configFileName, xmlWriterSettings)
xmlDoc.Save(xmlWriter)
于 2012-07-19T11:07:05.207 に答える