2010-06-19 48 views

回答

24

如果元素只包含其他元素,則其他答案將起作用。如果你想包括文本,以及,你需要使用節點(),而不是元素():

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

我剛剛測試過這個,它工作完美。這是我在Stack Overflow上的第一個問題,我對它的回答有多快,我印象深刻。 :) – Michael 2010-06-19 15:58:48

+0

工程就像一個魅力! – 2014-02-14 09:01:36

3

XElement類不提供直接獲取元素的「內部XML」的方法。
可以串聯的子元素手動雖然,例如使用

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

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

的foreach)(以Element.Elements()VAR元件){ 收率返回element.ToString(; }

返回帶有字符串的IEnumerable。

1

看到各種各樣的選擇,性能測試這裏:Best way to get InnerXml of an XElement?

您可能希望爲您創造顫抖的擴展方法這樣:

/// <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

對我來說是這樣的,由於Quartermeister

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

我只是在我的instanceXElement中有HTML代碼,我想要準確地取出它。