You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让XElement.Load读取XML时按Test节点ID降序排列?

解决方案

你可以通过LINQ to XML实现Test节点按ID降序排序,同时完整保留所有子节点内容,具体实现步骤如下:

  1. 加载原始XML:用XElement.Load读取目标XML文件。
  2. 提取并排序Test节点:获取所有<Test>节点,将ID属性转换为整数后执行降序排序——这一步必须转成整数,避免字符串排序的逻辑误差(比如"10"和"2"按字符串排序会得到错误的顺序)。
  3. 重构根节点结构:清空原<Sim>节点的所有子节点,再把排序后的Test节点重新添加进去。

完整代码示例

using System;
using System.Linq;
using System.Xml.Linq;

class XmlSortingExample
{
    static void Main()
    {
        // 加载XML文件,替换为你的实际文件路径
        XElement simRoot = XElement.Load("your-file-path.xml");

        // 提取Test节点并按ID数值降序排序
        var sortedTestNodes = simRoot.Elements("Test")
                                     .OrderByDescending(testNode => int.Parse(testNode.Attribute("ID").Value));

        // 清空原Sim节点的子节点,添加排序后的节点
        simRoot.RemoveAll();
        simRoot.Add(sortedTestNodes);

        // 可选:将排序后的XML保存到新文件
        simRoot.Save("sorted-result.xml");

        // 控制台输出验证排序结果(可选)
        Console.WriteLine(simRoot.ToString());
    }
}

关键细节说明

  • 排序逻辑可靠性:通过int.Parse转换ID属性,确保排序基于数值大小而非字符串字典序,避免出现ID="10"排在ID="2"前面的错误。
  • 子节点完整性:排序操作针对整个<Test>节点,因此节点下的<Instructor>及其子字段(Name、Surname、Rank)会被完整保留,不会丢失任何内容。
  • 结构重构合理性:先清空原根节点的子节点再添加排序后的节点,最终生成的XML结构与原始结构一致,仅Test节点顺序调整。

内容的提问来源于stack exchange,提问作者dositelu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 22:55:56