c# - XElement - 如何将元素的后代放入字符串中

标签 c#

我在 .Net 3.5 Framework 中使用 XElement 对象来加载以下 xml 片段。

示例 XML:

<xmlfragment>
  <list id="1" value="one" />
  <list id="2" value="two" />
  <other stuff="here" />
  <more things="as well"></more>
</xmlfragment>

如何将 xmlfragment 的后代转化为字符串?换句话说,将除 xmlfragment 标记之外的所有内容都放在一个字符串中。

以下可行,但想知道这是否是最简洁的方法。

string results = String.Join(" ", xmlfragment.DescendantNodes().Select(x=>x.ToString()).ToArray());

最佳答案

当您使用 .NET 3.5 时,没有特别简单的方法来简化它 - 尽管如果您发现自己经常需要它,您总是可以编写自己的静态方法来模拟 string 的新重载。加入。您可以在 Select 调用中使用方法组转换而不是 lambda 表达式,但是如果您使用旧的 C# 编译器,这很可能会导致问题太多。 (关于类型推断和方法组转换的确切规则随着时间的推移而改变。)

但是,当存在嵌套元素时,当前代码将失败。看起来您只需要直接子节点:

string results = string.Join(" ", xmlFragment.Nodes().Select(x => x.ToString()).ToArray());

关于c# - XElement - 如何将元素的后代放入字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43613294/

相关文章:

c# - 如何从配置文件重构高度重复的阅读部分

c# - 在泛型类 C# 中继承

c# - 如何从泛型内部获取类类型?

c# - 当用户单击控制台窗口时,代码停止执行

c# - XmlWriter.WriteRaw 在通过 XElement.CreateWriter 创建编写器时转义 xml

c# - LINQ 到 SQL : Updating without Refresh when “UpdateCheck = Never”

c# - 返回以逗号分隔的前两个数组元素加起来等于 30 的字符串

c# - 当前上下文 mvc 4 中不存在名称 ViewBag

c# - 对数组执行浅复制以调整数组大小有何影响?

c# - 从 PrincipalContext 中查找域组件