将 XElement 的子级转换为字符串 [重复]

Posted

技术标签:

【中文标题】将 XElement 的子级转换为字符串 [重复]【英文标题】:Converting the children of XElement to string [duplicate] 【发布时间】:2011-03-05 19:09:51 【问题描述】:

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

我正在使用 XElement 来保存 html 服务器端的块。

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

有人可以帮我解决这个问题吗? :)

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

我刚刚测试了这个,效果很好。这是我关于 Stack Overflow 的第一个问题,我对我得到答案的速度印象深刻。 :) 像魅力一样工作!!!【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

查看各种选项,在此处进行性能测试:Best way to get InnerXml of an XElement?

您可能想为您的 quiver 创建一个扩展方法:

/// <summary>
///  Gets the inner XML of an <see cref="XElement"/>. Copied from
///  https://***.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();

【讨论】:

【参考方案4】:

foreach(Element.Elements() 中的变量元素) 产量返回元素.ToString();

返回一个带字符串的 IEnumerable。

【讨论】:

【参考方案5】:

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

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

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

【讨论】:

以上是关于将 XElement 的子级转换为字符串 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将 XElement 转换为字符串

如何将 XElement 转换为 XDocument

对 XElement 的子节点的索引访问

将 XElement 转换为 XmlNode

如何将 Dictionary<XElement,XElement> 转换为 xml 文件?

将部分 XML 字符串解析为 XElement 列表