private ExternalSiteMapNode GetExternalSiteMap( TreeNode<SiteMapNode> siteMapNode, ExternalSiteMapNode parent )
        {
            var externalSiteMapNode = new ExternalSiteMapNode
            {
                Key = siteMapNode.Data.Id.ToString( CultureInfo.InvariantCulture ),
                Url = siteMapNode.Data.Url,
                Title = siteMapNode.Data.Title,
                Description = siteMapNode.Data.Description
            };

            foreach ( TreeNode<SiteMapNode> childSiteMapNode in siteMapNode.Children )
            {
                ExternalSiteMapNode childExternalSiteMapNode = GetExternalSiteMap( childSiteMapNode, externalSiteMapNode );
                externalSiteMapNode.Children.Add( childExternalSiteMapNode );
            }

            return externalSiteMapNode;
        }
        private InternalSiteMapNode CreateSiteMap( InternalSiteMapNode parentInternalSiteMapNode, ExternalSiteMapNode externalSiteMapNode )
        {
            InternalSiteMapNode internalSiteMapNode;
            var siteMapNode = new SiteMapNode( this, externalSiteMapNode.Key, externalSiteMapNode.Url, externalSiteMapNode.Title, externalSiteMapNode.Description );

            if ( parentInternalSiteMapNode == null )
            {
                internalSiteMapNode = new InternalSiteMapNode( siteMapNode );
            }
            else
            {
                internalSiteMapNode = new InternalSiteMapNode( siteMapNode, parentInternalSiteMapNode );
            }

            foreach ( ExternalSiteMapNode child in externalSiteMapNode.Children )
            {
                CreateSiteMap( internalSiteMapNode, child );
            }

            return internalSiteMapNode;
        }