2009-08-26 7 views
2

Ich habe eine XDocument mit XElements wie folgt aus:XElement-Wert in XDocument aktualisieren?

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

ich das Textelement finden möchten, und seinen Wert zu aktualisieren. Ich habe einige LINQ funktioniert, aber es gibt den Wert zurück, anstatt mir das XElement und XDocument im Gegenzug zu aktualisieren.

Antwort

7

Sie können es nicht in einer einzelnen LINQ-Anweisung tun - LINQ ist über Abfragen, und Sie tun ein Update. Sie sollten LINQ verwenden, um nach Elementen zu suchen, die Sie aktualisieren möchten, und dann die Liste in foreach durchsuchen und die Änderungen übernehmen; z.B .:

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

Ich habe dies getan: var q = XMLData.Descendants ("Pagecontent") Nachkommen() SingleOrDefault (x => x.Name == item.Key);.. q.Value = item.Value; Allerdings, wenn ich XMLData betrachten, hat sich nichts geändert – Jon

+0

Ihre Abfrage klingt gut. Wenn Sie die Änderung nicht sehen, liegt das wahrscheinlich daran, dass Sie danach suchen. Können Sie den Code posten, mit dem Sie überprüfen, ob die Änderung stattgefunden hat? –

+0

doc.Save (...) hinzufügen; – WhiteWolfza