2010-06-19 8 views

risposta

24

Le altre risposte funzioneranno se l'elemento contiene solo altri elementi. Se si desidera includere il testo così, ti consigliamo di utilizzare i nodi() al posto di elementi():

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

Ho appena provato questo, ha funzionato perfettamente. Questa è stata la mia prima domanda su Stack Overflow, sono certamente impressionato dalla rapidità con cui ho avuto risposta. :) – Michael

+0

Funziona come un fascino !!! –

3

La classe XElement non fornisce un metodo per ottenere direttamente il "XML interno" dell'elemento.
È possibile concatenare gli elementi secondari manualmente se, ad esempio utilizzando

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

o

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

foreach (var element in Element.Elements()) { resa ritorno element.ToString(); }

Restituisce un oggetto IEnumerable con stringhe.

1

vedere una varietà di opzioni, con verifica delle prestazioni qui: Best way to get InnerXml of an XElement?

Si consiglia per creare un metodo di estensione per la vostra faretra in quanto tale:

/// <summary> 
/// Gets the inner XML of an <see cref="XElement"/>. Copied from 
/// https://stackoverflow.com/questions/3793/best-way-to-get-innerxml-of-an-xelement 
/// </summary> 
/// <param name="element">The element.</param> 
/// <returns>The inner XML</returns> 
public static string GetInnerXml(this XElement element) 
{ 
    var reader = element.CreateReader(); 
    reader.MoveToContent(); 
    return reader.ReadInnerXml(); 
} 
0

per me funziona così, grazie alla Quartermeister

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

Avevo solo codice HTML nel mio instanceXElement che volevo recuperare esattamente.

Problemi correlati