/// <summary> /// Froms the XML node. /// </summary> /// <param name="treeCollection">The tree collection.</param> /// <param name="currentColl">The current coll.</param> /// <param name="xnode">The xnode.</param> /// <param name="readerDelegate">The reader delegate.</param> private static void FromXmlNode(TreeCollection <T> treeCollection, ref TreeItemCollection <T> currentColl, XmlNode xnode, TreeItemXmlReaderDelegate readerDelegate) { XmlNodeList xlist = xnode.SelectNodes("./TreeItem"); for (int i = 0; i < xlist.Count; i++) { XmlNode currentNode = xlist[i]; TreeItem <T> newItem = currentColl.Add(treeCollection.GlobalCollection.CreateFreeKey(), default(T)); readerDelegate(ref newItem, currentNode); if (currentNode.ChildNodes.Count > 0) { TreeItemCollection <T> itemColl = newItem.Subitems; FromXmlNode(treeCollection, ref itemColl, xlist[i], readerDelegate); } } }
/// <summary> /// Froms the XML. /// </summary> /// <param name="xdoc">The xdoc.</param> /// <param name="readerDelegate">The reader delegate.</param> /// <returns>TreeCollection<T>.</returns> public static TreeCollection <T> FromXml(XmlDocument xdoc, TreeItemXmlReaderDelegate readerDelegate) { XmlNodeList xlist = xdoc.SelectNodes("TreeCollection//TreeItem"); TreeCollection <T> treeColl = new TreeCollection <T>(xlist.Count); xlist = xdoc.SelectNodes("TreeCollection/TreeItem"); for (int i = 0; i < xlist.Count; i++) { XmlNode currentNode = xlist[i]; TreeItem <T> newItem = treeColl.Items.Add(treeColl.GlobalCollection.CreateFreeKey(), default(T)); readerDelegate(ref newItem, currentNode); if (currentNode.ChildNodes.Count > 0) { TreeItemCollection <T> currentColl = treeColl.Items; FromXmlNode(treeColl, ref currentColl, xlist[i], readerDelegate); } } return(treeColl); }