如何使用类型提供程序编辑XML文件?

Ale*_*ill 6 f# type-providers

我理解如何使用类型提供程序从XML源检索数据.但是,我需要修改XML的特定部分并将其保存到磁盘.我已尝试使用<-该属性为只读属性,但该属性是只读的.

例如:

let doc = MyXml.load fileName
doc.ItemId.Id <- "newId" // doesn't work
doc |> saveXml
Run Code Online (Sandbox Code Playgroud)

对于JSON,有一个类似的问题,其中建议是创建一个新对象,但这是专门针对XML的.

Ale*_*ill 6

在研究我的问题时,我发现你可以使用.XElement访问器来获取对可变XElement对象的引用.因此,解决方案是:

let doc = MyXml.load fileName
doc.ItemId.XElement.Element(XName.Get "Id").Value <- "newId" // tada
doc.XDocument.Save(...)
Run Code Online (Sandbox Code Playgroud)

请注意,如果要修改叶节点,则必须在父级.XElement上使用访问器.这是因为叶节点的类型是基元,并且没有自己的访问器.有点羞耻,但我想当你想要只读访问价值时,它会使另一方的生活更轻松..XElement