我理解如何使用类型提供程序从XML源检索数据。但是,我需要修改XML的特定部分并将其保存到磁盘。我尝试使用<-
为节点分配值,但该属性是只读的。
例如:
let doc = MyXml.load fileName
doc.ItemId.Id <- "newId" // doesn't work
doc |> saveXml
有一个similar question for JSON,建议创建一个新对象,但这是专门针对XML的。
答案 0 :(得分:6)
在研究我的问题时,我发现您可以使用.XElement
访问器来获取对可变XElement
对象的引用。因此,解决方案是:
let doc = MyXml.load fileName
doc.ItemId.XElement.Element(XName.Get "Id").Value <- "newId" // tada
doc.XDocument.Save(...)
请注意,如果要修改叶节点,则必须使用父上的.XElement
访问器。这是因为叶节点的类型是原始类型,并且没有自己的.XElement
访问器。有点遗憾,但我想当你想要只读访问价值时,它会使另一方的生活更轻松。