2009-08-26 9 views
2

J'ai un XDocument avec XElements comme celui-ci:Mettre à jour la valeur XElement dans XDocument?

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

Je veux trouver l'élément de texte et mettre à jour sa valeur. J'ai un certain LINQ fonctionnant mais renvoyant la valeur plutôt que me permettant de mettre à jour XElement et XDocument en retour.

Répondre

7

Vous ne pouvez pas le faire dans une seule instruction LINQ - LINQ concerne les requêtes et vous effectuez une mise à jour. Vous devez utiliser LINQ pour rechercher les éléments que vous souhaitez mettre à jour, puis parcourir la liste au foreach et appliquer les modifications; par exemple .:

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

je l'ai fait: var q = XMLData.Descendants ("PageContent") Descendants() SingleOrDefault (x => == x.Name item.Key);.. q.Valeur = item.Value; Cependant quand je regarde XMLData rien n'a changé – Jon

+0

Votre requête semble bien. Si vous ne voyez pas le changement, c'est probablement à cause de la façon dont vous le vérifiez. Pouvez-vous poster le code que vous utilisez pour vérifier que le changement est arrivé? –

+0

ajouter doc.Save (...); – WhiteWolfza

Questions connexes