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

10

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

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

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

请有人能帮助我吗? :)

5个回答

28

如果元素仅包含其他元素,其他答案是有效的。如果您还想包括文本,请改用Nodes()而不是Elements():

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

我刚刚测试了这个,它完美地工作了。这是我在Stack Overflow上的第一个问题,我对得到快速回答的方式印象深刻。 :) - Michael
运行得十分顺畅!!! - RPB

3
XElement类没有提供直接获取元素“内部XML”的方法。
不过你可以手动拼接子元素,例如使用:
string result = string.Concat(element.Elements());

或者

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

2

在这里查看各种选项,包括性能测试:获取XElement的InnerXml最佳方法是什么?

您可能想要创建一个扩展方法来实现:

/// <summary>
///  Gets the inner XML of an <see cref="XElement"/>. Copied from
///  https://dev59.com/L3VD5IYBdhLWcg3wXaYd
/// </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代码,我想要精确地提取出来。


0

使用foreach循环遍历Element.Elements()中的每个元素,然后将其转换为字符串并返回。

返回一个包含字符串的IEnumerable。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接