Ejemplo n.º 1
0
        public BTree <Node> GetFiles(string filename)
        {
            var tree1 = new BTree <Node>
            {
                Data = new Node("文件", "", true)
            };

            var doc     = XElement.Load(filename);
            var Targets = doc.Element("Targets");
            var Target  = Targets.Element("Target");

            tree1.Data.Name = Target.Element("TargetName").Value;
            var Groups = Target.Element("Groups");

            var Group = Groups.Elements("Group");

            foreach (var grou in Group)
            {
                var aa    = grou.Element("GroupName");
                var tree2 = new BTree <Node>
                {
                    Data = new Node(aa.Value, "", false)
                };
                tree1.AddNode(tree2);

                var Files = grou.Elements("Files");
                foreach (var File in Files)
                {
                    var file = File.Elements("File");
                    foreach (var ff in file)
                    {
                        var FilePath = ff.Element("FilePath");
                        if (FilePath != null)
                        {
                            var tree3 = new BTree <Node>
                            {
                                Data = new Node(FilePath.Value, "", false)
                            };
                            tree2.AddNode(tree3);
                        }
                    }
                }
            }
            return(tree1);
        }
Ejemplo n.º 2
0
        public BTree <Node> GetFiles(string filename)
        {
            var treelevel_0 = new BTree <Node>();

            treelevel_0.Data = new Node("文件", "", true);

            var  namegroup       = "";
            var  currentnode     = treelevel_0;
            var  parentnode      = treelevel_0; //上一级
            var  grandparentnode = treelevel_0; //上上级
            bool hasfiles        = false;

            if (File.Exists(filename))
            {
                using (var sr = File.OpenText(filename))
                {
                    var s = "";
                    while ((s = sr.ReadLine()) != null)
                    {
                        if (s.IndexOf("type_name") <= 0)
                        {
                            continue;
                        }
                        if (s.IndexOf("xml_contents_version") >= 0)
                        {
                            continue;
                        }
                        var ssspaces = s.Split(' ');
                        foreach (var sss in ssspaces)
                        {
                            var ssequals = sss.Split('=');
                            if ((ssequals != null) && ssequals.Length == 2 && ssequals[0].Equals("name"))
                            {
                                namegroup = ssequals[1].Split('"')[1];
                            }
                            if ((ssequals != null) && ssequals.Length == 2 && ssequals[0].Equals("persistent"))
                            {
                                if (ssequals[1].Split('"')[1].Length == 0)
                                {
                                    //文件夹
                                    var tnode = new BTree <Node>();
                                    tnode.Data = new Node(namegroup, "", true);

                                    if (hasfiles)
                                    {
                                        //已经有文件
                                        parentnode.AddNode(tnode);
                                        currentnode = tnode;
                                    }
                                    else
                                    {
                                        //一直是文件夹
                                        currentnode.AddNode(tnode);
                                        grandparentnode = parentnode;
                                        parentnode      = currentnode;
                                        currentnode     = tnode;
                                    }
                                    hasfiles = false;
                                }
                                else
                                {
                                    //文件
                                    if (ssequals[1].Split('"')[1].IndexOf(".cyprj") >= 0)
                                    {
                                        //工程名称
                                        treelevel_0.Data.Name = ssequals[1].Split('"')[1];
                                        hasfiles = false;
                                    }
                                    else if (ssequals[1].Split('"')[1].IndexOf(".cydwr") >= 0)
                                    {
                                        //特殊目录
                                        hasfiles = false;
                                    }
                                    else if (ssequals[1].Split('"')[1].IndexOf("TopDesign") >= 0)
                                    {
                                        //特殊目录
                                        hasfiles = false;
                                    }
                                    else if ((ssequals[1].Split('"')[1].IndexOf("Generated_Source") >= 0) && ((ssequals[1].Split('"')[1].Length == "Generated_Source".Length)))
                                    {
                                        //特殊目录
                                        var tree3 = new BTree <Node>();
                                        tree3.Data = new Node(ssequals[1].Split('"')[1]);
                                        treelevel_0.AddNode(tree3);

                                        grandparentnode = treelevel_0;
                                        parentnode      = treelevel_0;
                                        currentnode     = tree3;
                                        hasfiles        = false;
                                    }
                                    else if ((ssequals[1].Split('"')[1].IndexOf(@"Generated_Source\PSoC5") >= 0) && ((ssequals[1].Split('"')[1].Length == @"Generated_Source\PSoC5".Length)))
                                    {
                                        //特殊目录
                                        var tree3 = new BTree <Node>();
                                        tree3.Data      = new Node(ssequals[1].Split('"')[1]);
                                        tree3.Data.Name = "PSoC5";
                                        currentnode.AddNode(tree3);

                                        grandparentnode = parentnode;
                                        parentnode      = currentnode;
                                        currentnode     = tree3;

                                        grandparentnode = parentnode;
                                        parentnode      = currentnode;

                                        hasfiles = false;
                                    }
                                    else
                                    {
                                        //常规文件
                                        var tree3 = new BTree <Node>();
                                        tree3.Data = new Node(ssequals[1].Split('"')[1]);
                                        currentnode.AddNode(tree3);
                                        hasfiles = true;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(treelevel_0);
        }