【问题标题】:How to add some number to XML element's value (it's concatenating instead of adding)?如何向 XML 元素的值添加一些数字(它是连接而不是添加)?
【发布时间】:2020-04-17 18:24:47
【问题描述】:

我一直在为 XML linq 中的元素值添加 10(一个数字)...

到目前为止,我已经想出了这个代码:

            XDocument XMLDoc = XDocument.Load(@"C:\Users\...");

            var change = from block in XMLDoc.Descendants("Head")
                         where double.Parse(block.Element("Tenon").Value, CultureInfo.InvariantCulture) < 13
                         select block.Element("Tenon");


            foreach (XElement x in change)
            {
                double number = 10;
                x.Value = (double.Parse(x.Value, CultureInfo.InvariantCulture) + number).ToString();


                Console.WriteLine(x.Value);
             }

            XMLDoc.Save(@"C:\Users\...");

            Console.ReadLine();

aaaaaaaaaaaa 我卡住了。

它是连接而不是添加,我知道 x.Value 是字符串,但我真的不知道,因为我已经尝试了几乎所有东西......你能帮忙吗?

【问题讨论】:

  • 问题是您在枚举源时更改了源。在你的 foreach 之前添加一个 ToList(),你可以安全地更改源

标签: c# xml linq


【解决方案1】:

提供的代码正确添加了一个数字。我看到的唯一问题 - 您只是从 Head 中验证和选择第一个 Tenon 节点。

改用以下 linq 表达式:

var change = from block in XMLDoc.Descendants("Head")
                    from tenon in block.Elements("Tenon")
                    where double.Parse(tenon.Value) < 13
                    select tenon;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多