using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
namespace IReaper.CourseData{
/// <summary>
///
/// </summary>
/// <param name="course"></param>
public delegate void CourseProcessEventHandler(Course course);
/// <summary>
/// CourseXmlParseCourse
/// </summary>
public abstract class CourseXmlParser
{
protected string path;
protected string xmlName;
public static event CourseProcessEventHandler OnCourseAdded;
public static event EventHandler OnCourseAddedFinished;
public static event EventHandler OnBeforeCourseAdded;
protected CourseXmlParser(string Path)
{
this.path = Path;
}
private void ParseCourseXml()
{
XmlReader xReader = null;
try
{
xReader = XmlReader.Create(this.path);
Course course;
Dictionary<string, Course> dict = CourseDataManager.AllCourses.KeydList;
if (OnBeforeCourseAdded != null)
{
OnBeforeCourseAdded(this, EventArgs.Empty);
}
while (xReader.ReadToFollowing(this.xmlName))
{
course = ProcessCourse(xReader, dict);
if (course != null)
{
if (OnCourseAdded != null)
{
OnCourseAdded(course);
}
}
}
}
catch
{
throw;
}
finally
{
xReader.Close();
}
}
protected abstract Course ProcessCourse(XmlReader xReader,Dictionary<string,Course> dict);
//
public static void LoadXml()
{
CourseXmlParser parser = new InfoXMLParser();
parser.ParseCourseXml();
if (OnCourseAddedFinished != null)
{
OnCourseAddedFinished(parser, EventArgs.Empty);
}
}
}
}
|