static void LoadChildTree(XmlNode parentEl, NodeClass parentTree) { foreach (XmlNode currentEl in parentEl) { //jump <table> if (currentEl.LocalName.Equals("table")) continue; NodeAppearPair currentNodeTreePair = parentTree.GetChild(currentEl.LocalName); if (Object.ReferenceEquals(currentNodeTreePair, null)) { //new tree NodeClass currentNodeTree = new NodeClass(currentEl.LocalName); parentTree.childNodes.Add(new NodeAppearPair(ref currentNodeTree)); } else //old tree currentNodeTreePair.totalAppearCount++; //check child if (currentEl.HasChildNodes) LoadChildTree(currentEl, currentNodeTreePair.nodeClass); } }