|
sealed class SiteFeature : SPFeatureReceiver
{
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
SPSite site = properties.Feature.Parent as SPSite;
using (SPWeb rootWeb = site.RootWeb)
{
SPList list = rootWeb.GetList(SPUrlUtility.CombineUrl(rootWeb.Url, "Lists/Animes"));
ProvisionListsWithXmlData(
properties.Definition.RootDirectory + @"\ListData\data.xml", list);
}
}
public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
}
public override void FeatureInstalled(SPFeatureReceiverProperties properties)
{
}
public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
{
}
//____________________________________________________________________
//
/// <summary>
/// Read a xml file and build an hierarchy of folders.
/// </summary>
private void ProvisionListsWithXmlData(string dataFile, SPList list)
{
XmlDocument document = new XmlDocument();
document.Load(dataFile);
XmlNode root = document.DocumentElement;
string parentUrl = list.RootFolder.ServerRelativeUrl;
SetupFolders(root.ChildNodes, list, parentUrl);
}
private static void SetupFolders(XmlNodeList nodes, SPList list, String parentUrl)
{
foreach (XmlNode node in nodes)
{
if (node.NodeType != XmlNodeType.Element ||
!node.Name.Equals("Folder", StringComparison.InvariantCultureIgnoreCase)) continue;
SPListItem fold = list.Items.Add(parentUrl, SPFileSystemObjectType.Folder);
string folderTitle = node.Attributes["Title"].Value;
fold[SPBuiltInFieldId.Title] = folderTitle;
fold.Update();
if (node.HasChildNodes)
SetupFolders(node.ChildNodes, list, parentUrl + '/' + folderTitle);
}
}
}
|