2009-08-26 82 views
2

我有一个XElements的XDocument像这样:更新XDocument中的XElement值?

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

我想找到的文本元素和更新它的值。我有一些LINQ工作,但它返回的值,而不是让我更新XElement和XDocument作为回报。

回答

7

你不能在单个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"; 
} 
+0

我这样做: VAR Q = XMLData.Descendants( “PageContent”)后代()的SingleOrDefault(X => x.Name == item.Key); q.Value = item.Value; 但是,当我看看XMLData没有任何变化 – Jon 2009-08-26 20:22:06

+0

您的查询听起来不错。如果你没有看到变化,那很可能是因为你检查它的方式。你可以发布你用来验证变更发生的代码吗? – 2009-08-26 21:21:21

+0

add doc.Save(...); – WhiteWolfza 2017-05-05 11:23:24

相关问题