/// <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 { } }
/// <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); }