在XDocument中更新XElement的值?

3

我有一个XDocument,其中包含这样的XElement:

<PageContent>
  <Text>My Text</Text>
  <Image>image.jpg</Image>
</PageContent>

我想找到文本元素并更新其值。我已经使用了一些LINQ,但它返回的是值而不是允许我更新XElement和XDocument。

1个回答

8

你不能在单个LINQ语句中完成它 - LINQ是关于查询的,而你正在进行更新。你应该使用LINQ查询要更新的元素,然后在foreach中遍历列表并应用更改;例如:

var pageContents = doc./* ... */.Elements("PageContents").Where(...);
foreach (var pageContent in pageContents)
{
    pageContent.Element("Text").Value = "Foo";
    pageContent.Element("Image").Value = "bar.jpg";
}

我已经完成了这个:var q = XMLData.Descendants("PageContent").Descendants().SingleOrDefault(x => x.Name == item.Key); q.Value = item.Value;但是当我查看XMLData时,什么也没有改变。 - Jon
你的查询看起来没问题。如果你没有看到变化,那很可能是因为你检查它的方式不对。你能否发布一下用于验证更改是否发生的代码? - Pavel Minaev
添加 doc.Save(...); - WhiteWolfza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接