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

Iは、この行っている:。 するvar Q = XMLData.Descendants( "PageContent")を子孫()SingleOrDefault(X => x.Name == item.Key)。 q.Value = item.Value; しかし、私はXMLDataを見ても何も変わっていません – Jon

+0

あなたの質問はうまく聞こえます。あなたが変更を見ていない場合、それはあなたがそれをチェックしている方法のために最も可能性が高いです。変更が行われたことを確認するために使用するコードを投稿できますか? –

+0

doc.save(...)を追加します。 – WhiteWolfza