j'ai le code XML suivant passé en IQueryable à une méthode, à savoirLINQ to XML, remplacer les nœuds enfants mais gardez l'état
XML:
<body>
<p>Some Text</p>
<p>Some Text</p>
<pullquote>This is pullquote</pullquote>
<p>Some Text</p>
<p>Some Text</p>
<body>
Méthode:
public static string CreateSection(IQueryable<XElement> section)
{
var bodySection = from b in articleSection.Descendants("body")
select b;
//Do replacement here.
var bodyElements = bodySection.Descendants();
StringBuilder paragraphBuilder = new StringBuilder();
foreach (XElement paragraph in bodyElements)
{
paragraphBuilder.Append(paragraph.ToString());
}
return paragraphBuilder.ToString();
}
Ce que je veux accomplir est de remplacer le <pullquote>
par un <p>
(et peut-être ajouter des attributs).
Mon problème n'est pas le remplacement réel (XElement.ReplaceWith()), mais le fait qu'après le remplacement, les modifications ne reflètent pas la variable bodySection qui est utilisée par StringBuilder.
Comment ferais-je pour que cela fonctionne?
Vous avez raison, en travaillant avec l'ensemble de la collection semble être la seule solution –
@BK: Strictement parlant , il ne doit pas être un 'List' - tout ce qui matérialise la requête et maintient les résultats fera l'affaire. Le stockage réel est un détail d'implémentation - mais une liste est l'approche la plus simple. –