c# - 使用 LINQ 将所有 Xml 元素值大写

标签 c# linq linq-to-xml

我有一个包含许多元素/子元素等的 XDocument,我想将每个元素的值设为大写。

doc.Descendants().ToList().ForEach(f => f.Value = f.Value.ToUpper());

不起作用,因为它将所有值(如上)连接到父元素中。

最佳答案

LINQ 表达式通常不应修改源的值。它们应该只返回新值(将它们视为过滤器......你放入一些东西,就会出现不同的东西)

foreach (var desc in doc.Descendants()) {
    var nodes = desc.Nodes().Where(p => p.NodeType == XmlNodeType.Text);

    foreach (XText node in nodes) {
        node.Value = node.Value.ToUpper();
    }
}

关于c# - 使用 LINQ 将所有 Xml 元素值大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5322776/

相关文章:

c# - LINQ to SQL 划分筛选器以获得更好的性能

c# 将非常大的位图保存为 jpeg(或任何其他压缩格式)

c# - 在 C# 中使事件异步的最佳方法

c# - 如何更快/更智能地读取文本文件?

c# - 比嵌套 foreach 更好的方法?

c# - 后续 from 子句与查询延续

c# - XDocument.Load 丢失声明

.net - 使用 XDocument 时如何在属性值中保留空格?

c# - 并行的 AddOrUpdate 的 ConcurrentDictionary 和 ConcurrentBag

c# - 将 XElement 转换为字符串