Esempio n. 1
0
        public IPathNode FindNode(string path)
        {
            path += '.';

            string    name = string.Empty;
            IPathNode last = mRoot;

            for (int i = 0; i < path.Length && last != null; ++i)
            {
                char c = path[i];

                if (c == '.')
                {
                    if (!string.IsNullOrEmpty(name))
                    {
                        last = last.Find(name);
                        name = string.Empty;
                    }
                }
                else if (c == '[')
                {
                    if (!string.IsNullOrEmpty(name) || last is ArrayNode == false)
                    {
                        last = last.Find(name);
                        name = string.Empty;
                    }
                }
                else if (c == ']')
                {
                    last = last.Find(name);
                    name = string.Empty;
                }
                else
                {
                    name += c;
                }
            }

            return(last);
        }