将 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 的子级转换为字符串 [重复]的主要内容,如果未能解决你的问题,请参考以下文章