手上有一个xml文件,希望能根据提供的xml文件寻找列出指定节点的所有内容,
例如寻找出ELEMENTS下的所有的值uint8,sint32,string,Earea,SRdsSettingInit.........等,
就是能实现一级一级往下寻找,
如果存在同一级,列出该同级的所有的值,uint8,sint32,string,Earea,SRdsSettingInit.........等,
也希望能列出我想要的每一级指定的内容的值。
手上有一个xml文件,希望能根据提供的xml文件寻找列出指定节点的所有内容,
例如寻找出ELEMENTS下的所有的值uint8,sint32,string,Earea,SRdsSettingInit.........等,
就是能实现一级一级往下寻找,
如果存在同一级,列出该同级的所有的值,uint8,sint32,string,Earea,SRdsSettingInit.........等,
也希望能列出我想要的每一级指定的内容的值。
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 . . .