/*
Kooboo is a content management system based on ASP.NET MVC framework. Copyright 2009 Yardi Technology Limited.
This program is free software: you can redistribute it and/or modify it under the terms of the
GNU General Public License version 3 as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program.
If not, see http://www.kooboo.com/gpl3/.
*/
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Text;
using System.Xml;
namespace Everest.Library.Extjs.Tree{
public class XmlTreeNodeProvider : AbstractTreeNodeProvider
{
XmlDocument xdom = new XmlDocument();
public XmlTreeNodeProvider(string fileName)
: this(fileName, null)
{ }
public XmlTreeNodeProvider(string fileName, ITreeNodeChecker checker)
{
this.NodeChecker = checker;
xdom.Load(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName));
}
#region ITreeNodeProvider Members
public override IDictionary<string, object>[] GetChildNodes(string parentNodeId, NameValueCollection attributes)
{
XmlNode parentNode = xdom.SelectSingleNode(string.Format("//node[@id='{0}']", parentNodeId));
if (parentNode == null)
return new IDictionary<string, object>[0];
else
{
IList<IDictionary<string, object>> treeNodes = new List<IDictionary<string, object>>();
foreach (XmlNode xmlNode in parentNode.ChildNodes)
{
TreeNode node = new TreeNode();
foreach (XmlAttribute att in xmlNode.Attributes)
{
node.AddAttribute(att.Name, att.Value);
}
if (IsVisible(node))
{
treeNodes.Add(node.Attributes);
}
}
return treeNodes.ToArray();
}
}
#endregion
}
}
|