2009-08-26 37 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

相關問題