Jon
Jon

Reputation: 40032

Update XElement value in XDocument?

I have a XDocument with XElements such as this:

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

I want to find the Text element and update its value. I have some LINQ working but its returning the value rather than allowing me to update the XElement and XDocument in return.

Upvotes: 3

Views: 6500

Answers (1)

Pavel Minaev
Pavel Minaev

Reputation: 101555

You can't do it in a single LINQ statement - LINQ is about queries, and you're doing an update. You should use LINQ to query for elements you want to update, and then go through the list in foreach and apply the changes; e.g.:

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

Upvotes: 8

Related Questions