用一个元素更新Linq to XML元素

本文关键字:元素 更新 Linq to XML 一个 | 更新日期: 2023-09-27 18:17:27

我有一个Add和一个Update函数来更新我正在处理的xml数据库中的列表。在add函数中,我这样做:

new XElement(ImageUtilities.GetImageXElement(series.image)),

它基本上接受一个图像对象,做一些背景工作(工作得很好)并返回一个XElement。这是完美的。当我尝试进行更新时,问题就出现了。我要做的就是:

xseries.SetElementValue(ImageUtilities.GetImageXElement(series.image));

我已经尝试了以下显然不起作用,但我认为它的一些变化会起作用,它编译,但它不会运行。它给出了错误:"System。一个XObject不能被用作一个值。我在谷歌上搜索了一下,似乎没有说,你用一个元素更新一个元素。

xseries.SetElementValue("image", ImageUtilities.GetImageXElement(series.image));

我可以让它正常工作:

xseries.Element("image").SetAttributeValue("guid", series.image.guid);
xseries.Element("image").SetAttributeValue("main", series.image.main);
xseries.Element("image").SetAttributeValue("height", series.image.height);
xseries.Element("image").SetAttributeValue("width", series.image.width);
xseries.Element("image").SetAttributeValue("order", series.image.order);
... and so on. 

但是如果图像对象改变了,我就必须返回并更改我之后所做的一切

用一个元素更新Linq to XML元素

如何将现有的<image>元素替换为新的<image> ?您可以使用ReplaceWith():

xseries.Element("image")
       .ReplaceWith(ImageUtilities.GetImageXElement(series.image));