9 votes

Convertir les enfants de XElement en chaîne de caractères

Possible Duplicate:
Meilleure façon d'obtenir InnerXml d'un XElement?

J'utilise un XElement pour contenir un bloc de HTML côté serveur.

J'aimerais convertir les enfants de ce XElement en une chaîne de caractères, un peu comme le fait une propriété "InnerHtml" en javascript.

Quelqu'un peut-il m'aider s'il vous plaît? :)

27voto

Quartermeister Points 24729

Les autres réponses fonctionneront si l'élément ne contient que d'autres éléments. Si vous voulez inclure du texte aussi, vous voudrez utiliser Nodes() au lieu de Elements():

var result = string.Concat(element.Nodes());

3voto

dtb Points 104373

La classe XElement ne fournit pas de méthode pour obtenir directement le "XML interne" de l'élément.
Vous pouvez concaténer les éléments enfants manuellement, par exemple en utilisant

string result = string.Concat(element.Elements());

ou

string result = string.Join(Environment.NewLine, element.Elements());

2voto

Oskar Austegard Points 2047

Découvrez une variété d'options, avec des tests de performance ici: Meilleure façon d'obtenir InnerXml d'un XElement?

Vous voudrez peut-être créer une méthode d'extension pour votre carquois comme suit:

/// 
///  Obtient le XML interne d'un . Copié de
///  https://stackoverflow.com/questions/3793/best-way-to-get-innerxml-of-an-xelement
/// 
/// L'élément.
/// Le XML interne
public static string GetInnerXml(this XElement element)
{
    var reader = element.CreateReader();
    reader.MoveToContent();
    return reader.ReadInnerXml();
}

0voto

Jouke van der Maas Points 2423

Foreach(var element in Element.Elements()) { yield return element.ToString(); }

Retourne un IEnumerable de chaînes de caractères.

0voto

Sadi Points 147

Pour moi, ça fonctionne comme ça, merci à Quartermeister

string result = string.Concat(instanceXElement.Nodes().ToArray());

J'avais juste du code HTML dans mon instanceXElement que je voulais extraire exactement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X