9

可能重复:
获取 XElement 的 InnerXml 的最佳方法?

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

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

有人可以帮我吗?:)

4

5 回答 5

27

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

var result = string.Concat(element.Nodes());
于 2010-06-19T15:47:42.613 回答
3

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

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

或者

string result = string.Join(Environment.NewLine, element.Elements());
于 2010-06-19T15:40:11.077 回答
2

在此处查看各种选项以及性能测试:获取 XElement 的 InnerXml 的最佳方法?

您可能希望为您的 quiver 创建一个扩展方法,如下所示:

/// <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();
}
于 2010-08-11T03:22:33.667 回答
0

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

返回带有字符串的 IEnumerable。

于 2010-06-19T15:40:53.440 回答
0

对我来说,它是这样工作的,感谢 Quartermeister

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

我的 instanceXElement 中只有 HTML 代码,我想准确地取出它。

于 2010-12-03T10:40:36.533 回答