File: UI\WebControls\XmlHierarchicalDataSourceView.cs
Project: ndp\fx\src\xsp\system\Web\System.Web.csproj (System.Web)
//------------------------------------------------------------------------------
// <copyright file="XmlHierarchicalDataSourceView.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
 
namespace System.Web.UI.WebControls {
 
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing.Design;
    using System.Text;
    using System.Web;
    using System.Web.UI;
    using System.Web.Util;
    using System.Xml;
 
 
 
    /// <devdoc>
    /// Represents a hierarchical view of an XmlDataSource.
    /// </devdoc>
    public class XmlHierarchicalDataSourceView : HierarchicalDataSourceView {
 
        private XmlDataSource _owner;
        private string _viewPath;
 
        /// <devdoc>
        /// Creates a new instance of XmlHierarchicalDataSourceView.
        /// </devdoc>
        internal XmlHierarchicalDataSourceView(XmlDataSource owner, string viewPath) {
            Debug.Assert(owner != null);
            _owner = owner;
            _viewPath = viewPath;
        }
 
 
 
        public override IHierarchicalEnumerable Select() {
            XmlNode root = _owner.GetXmlDocument();
 
            XmlNodeList nodes = null;
            if (!String.IsNullOrEmpty(_viewPath)) {
                XmlNode node = root.SelectSingleNode(_viewPath);
                if (node != null) {
                    nodes = node.ChildNodes;
                }
            }
            else {
                if (_owner.XPath.Length > 0) {
                    nodes = root.SelectNodes(_owner.XPath);
                }
                else {
                    nodes = root.ChildNodes;
                }
            }
 
            return new XmlHierarchicalEnumerable(nodes);
        }
    }
}