/// <summary> /// Parses the XML data file indicated by the URI to extract default sets /// of calendars. /// </summary> /// <param name="uri">The URI of the source XML document.</param> private static void ParseCalendars(string uri) { RuleBasedCalendar calendar = null; XmlReader reader = XmlReader.Create (uri); while (reader.Read ()) { switch (reader.NodeType) { case XmlNodeType.Element: { if (reader.LocalName.Equals ("calendar")) { string name = reader ["name"]; Weekend weekend = Weekend.ForName (reader ["weekend"]); if ((name != null) && (weekend != null)) calendar = new RuleBasedCalendar (name, weekend); else calendar = null; } else if (reader.LocalName.Equals ("fixed")) { string name = reader ["name"]; int from = Int32.Parse (reader ["from"]); int until = Int32.Parse (reader ["until"]); int month = ConvertMonth (reader ["month"]); int date = Int32.Parse (reader ["date"]); DateRoll dateRoll = DateRoll.ForName (reader ["roll"]); if ((calendar != null) && (month != 0) && (dateRoll != null)) calendar.AddRule (new CalendarRule.Fixed (name, from, until, month, date, dateRoll)); } else if (reader.LocalName.Equals ("offset")) { string name = reader ["name"]; int from = Int32.Parse (reader ["from"]); int until = Int32.Parse (reader ["until"]); int when = ConvertWhen (reader ["when"]); int weekday = ConvertWeekday (reader ["weekday"]); int month = ConvertMonth (reader ["month"]); if ((calendar != null) && (month != 0) && (when != 0) && (weekday != 0)) calendar.AddRule (new CalendarRule.Offset (name, from, until, when, weekday, month)); } else if (reader.LocalName.Equals ("easter")) { string name = reader ["name"]; int from = Int32.Parse (reader ["from"]); int until = Int32.Parse (reader ["until"]); int offset = Int32.Parse (reader ["offset"]); if (calendar != null) calendar.AddRule (new CalendarRule.Easter (name, from, until, offset)); } break; } } } reader.Close (); }
/// <summary> /// Parses the XML data file indicated by the URI to extract default sets /// of calendars. /// </summary> /// <param name="uri">The URI of the source XML document.</param> private static void ParseCalendars(string uri) { RuleBasedCalendar calendar = null; XmlReader reader = XmlReader.Create(uri); while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: { if (reader.LocalName.Equals("calendar")) { string name = reader ["name"]; Weekend weekend = Weekend.ForName(reader ["weekend"]); if ((name != null) && (weekend != null)) { calendar = new RuleBasedCalendar(name, weekend); } else { calendar = null; } } else if (reader.LocalName.Equals("fixed")) { string name = reader ["name"]; int from = Int32.Parse(reader ["from"]); int until = Int32.Parse(reader ["until"]); int month = ConvertMonth(reader ["month"]); int date = Int32.Parse(reader ["date"]); DateRoll dateRoll = DateRoll.ForName(reader ["roll"]); if ((calendar != null) && (month != 0) && (dateRoll != null)) { calendar.AddRule(new CalendarRule.Fixed(name, from, until, month, date, dateRoll)); } } else if (reader.LocalName.Equals("offset")) { string name = reader ["name"]; int from = Int32.Parse(reader ["from"]); int until = Int32.Parse(reader ["until"]); int when = ConvertWhen(reader ["when"]); int weekday = ConvertWeekday(reader ["weekday"]); int month = ConvertMonth(reader ["month"]); if ((calendar != null) && (month != 0) && (when != 0) && (weekday != 0)) { calendar.AddRule(new CalendarRule.Offset(name, from, until, when, weekday, month)); } } else if (reader.LocalName.Equals("easter")) { string name = reader ["name"]; int from = Int32.Parse(reader ["from"]); int until = Int32.Parse(reader ["until"]); int offset = Int32.Parse(reader ["offset"]); if (calendar != null) { calendar.AddRule(new CalendarRule.Easter(name, from, until, offset)); } } break; } } } reader.Close(); }