未知昵称 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条)

报告相同问题?

悬赏问题

  • ¥20 关于游戏c++语言代码问题
  • ¥15 如何制作永久二维码,最好是微信也可以扫开的。(相关搜索:管理系统)
  • ¥15 delphi indy cookie 有效期
  • ¥15 labelme打不开怎么办
  • ¥35 按照图片上的两个任务要求,用keil5写出运行代码,并在proteus上仿真成功,🙏
  • ¥15 免费的电脑视频剪辑类软件如何盈利
  • ¥30 MPI读入tif文件并将文件路径分配给各进程时遇到问题
  • ¥15 pycharm中导入模块出错
  • ¥20 Ros2 moveit2 Windows环境配置,有偿,价格可商议。
  • ¥15 有关“完美的代价”问题的代码漏洞