使用Element将Linq更新为XML元素

时间:2014-08-11 03:23:32

标签: c# xml linq

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

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

它基本上需要一个图像对象,做一些背景的东西(工作正常)并返回一个XElement。这完美无瑕。当我尝试进行更新时,问题就出现了。我基本上试图做到以下几点。

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

我已经尝试过以下显然无效的方法,但我认为它的某些变体会起作用,它会编译,但它不会运行。它给出了错误:" System.ArgumentException: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. 

但如果图片对象发生变化,我将不得不重新加入并更改我之后所做的所有事情。

1 个答案:

答案 0 :(得分:1)

如何用新<image>替换现有的<image>元素?您可以使用ReplaceWith()执行此操作:

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