Beispiel #1
0
        /// <summary>
        /// Opens the WKT file and loads all the data into the reader's nodes
        /// </summary>
        /// <param name="filename">The name of the WKT file to load</param>
        public void Read(string filename)
        {
            if (!System.IO.File.Exists(filename))
            {
                throw new Exception("WKT File does not exist");
            }
            LevelList = new ArrayList();
            mvarNodes = new WKTNodes();

            try
            {
                string inData = System.IO.File.ReadAllText(filename);
                // Remove unwanted characters
                inData = inData.Replace("\t", "");
                inData = inData.Replace("\n", "");
                inData = inData.Replace("\r", "");
                inData = inData.Replace(", ", ",");


                int majLevel = 0;

                while (inData != "")
                {
                    int brkPos = inData.IndexOf("[");
                    if (brkPos == -1)
                    {
                        return;
                    }

                    string valName = (inData.Substring(0, brkPos)).Trim();
                    if (valName.Contains(","))
                    {
                        valName = valName.Substring(valName.IndexOf(",") + 1);
                    }
                    string innerText = LoadParameterFromWKT(valName, inData);
                    string param     = null;
                    inData = (inData.Substring(brkPos + 2 + innerText.Length)).Trim();

                    if (innerText.Contains("["))
                    {
                        brkPos = innerText.IndexOf("[");
                        brkPos = innerText.LastIndexOf(",", brkPos);
                        param  = (innerText.Substring(0, brkPos)).Trim();
                    }
                    else
                    {
                        param = innerText;
                    }

                    majLevel++;
                    mvarNodes.Add("Top", valName, innerText, param, "");
                }

                FindAllLevels();
            }
            catch { }
        }
Beispiel #2
0
        /// <summary>
        /// Returns all the nodes in the WKT string that match
        /// </summary>
        /// <param name="TagName">"The name of the Tag (e.g. DATUM)</param>
        public WKTNodes GetNodesbyName(string TagName)
        {
            WKTNodes getNodes = new WKTNodes();

            // Iterate through all the nodes and their children to find the match
            foreach (string testLevel in LevelList)
            {
                string[] splitLevels = testLevel.Split('.');
                WKTNode  retNode     = mvarNodes[Convert.ToInt32(splitLevels[0])];
                for (int i = 1; i < splitLevels.Length - 1; i++)
                {
                    retNode = retNode.Children[Convert.ToInt32(splitLevels[i])];
                }
                if (retNode.TagName.ToUpper() == TagName.ToUpper())
                {
                    getNodes.Add(retNode);
                }
            }
            return(getNodes);
        }