将XElement的子元素转换为字符串

时间:2010-06-19 15:34:14

标签: c# xml xhtml innerhtml xelement

  

可能重复:
  Best way to get InnerXml of an XElement?

我正在使用XElement来保存一个HTML服务器端。

我想将该XElement的子元素转换为字符串,有点像javascript中的“InnerHtml”属性。

有人可以帮我这个吗? :)

5 个答案:

答案 0 :(得分:26)

如果元素仅包含其他元素,则其他答案将起作用。如果您还想包含文本,则需要使用Nodes()而不是Elements():

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

答案 1 :(得分:3)

XElement类不提供直接获取元素的“内部XML”的方法 您可以手动连接子元素,例如使用

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

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

答案 2 :(得分:2)

在此处查看各种选项,并进行性能测试: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();
}

答案 3 :(得分:0)

foreach(Element.Elements()中的var元素){   yield return element.ToString(); }

返回带有字符串的IEnumerable。

答案 4 :(得分:0)

对我来说,这是有效的,感谢Quartermeister

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

我的instanceXElement中只有HTML代码,我想要完全取出。