未知昵称 2018-05-28 02:59 采纳率: 66.7%
浏览 881
已采纳

C#读取xml文件指定的值,一级一级往下寻找

手上有一个xml文件,希望能根据提供的xml文件寻找列出指定节点的所有内容,

例如寻找出ELEMENTS下的所有的值uint8,sint32,string,Earea,SRdsSettingInit.........等,
图片说明
就是能实现一级一级往下寻找,

如果存在同一级,列出该同级的所有的值,uint8,sint32,string,Earea,SRdsSettingInit.........等,

也希望能列出我想要的每一级指定的内容的值。
图片说明

xml文件下载地址

  • 写回答

7条回答 默认 最新

  • threenewbee 2018-05-28 03:33
    关注

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Xml.Linq;

    namespace Q690372
    {
    class Program
    {
    static string getpath(XElement node)
    {
    string s = node.Name.ToString().Replace("{http://autosar.org/schema/r4.0}", "");
    while (node.Parent != null)
    {
    node = node.Parent;
    s = node.Name.ToString().Replace("{http://autosar.org/schema/r4.0}", "") + "/" + s;
    }
    return s;
    }

        static int getlevel(XElement node)
        {
            int n = 1;
            while (node.Parent != null)
            {
                node = node.Parent;
                n++;
            }
            return n;
        }
    
        static void Main(string[] args)
        {
            var doc = XDocument.Load(args[0]);
            foreach (var node in doc.Descendants())
            {
                if (getlevel(node) == 6 && node.Descendants().Count() == 0) //获得第六级的叶子节点
                    Console.WriteLine(getpath(node) + "=" + node.Value);
            }
        }
    }
    

    }

    AUTOSAR/AR-PACKAGES/AR-PACKAGE/AR-PACKAGES/AR-PACKAGE/SHORT-NAME=BaseTypes
    AUTOSAR/AR-PACKAGES/AR-PACKAGE/AR-PACKAGES/AR-PACKAGE/SHORT-NAME=ImplementationDataTypes
    AUTOSAR/AR-PACKAGES/AR-PACKAGE/AR-PACKAGES/AR-PACKAGE/SHORT-NAME=ApplicationDataTypes
    AUTOSAR/AR-PACKAGES/AR-PACKAGE/AR-PACKAGES/AR-PACKAGE/SHORT-NAME=CompuMethods
    AUTOSAR/AR-PACKAGES/AR-PACKAGE/ELEMENTS/SERVICE-INTERFACE/SHORT-NAME=Tuner
    Press any key to continue . . .

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵