private void CreateConditions(XmlReader reader, TrackingConditionCollection conditions) { if (null == reader) throw new ArgumentNullException("reader"); if (null == conditions) throw new ArgumentNullException("conditions"); if (0 != string.Compare("Conditions", reader.Name, StringComparison.Ordinal)) throw new TrackingProfileDeserializationException(ExecutionStringManager.TrackingDeserializationInvalidPosition + "Conditions."); if (reader.IsEmptyElement) return; while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: if (0 == string.Compare(reader.Name, "ActivityTrackingCondition", StringComparison.Ordinal)) { ActivityTrackingCondition condition = new ActivityTrackingCondition(); CreateCondition(reader, condition); conditions.Add(condition); } // // Xsd validation will catch unknown elements break; case XmlNodeType.EndElement: if (0 == string.Compare(reader.Name, "Conditions", StringComparison.Ordinal)) return; break; } } // // Only valid exit is on an EndElement that matches the element that is passed in. throw new TrackingProfileDeserializationException(ExecutionStringManager.TrackingDeserializationCloseElementNotFound + "Conditions."); }
private void CreateConditions(XmlReader reader, TrackingConditionCollection conditions) { if (reader == null) { throw new ArgumentNullException("reader"); } if (conditions == null) { throw new ArgumentNullException("conditions"); } if (string.Compare("Conditions", reader.Name, StringComparison.Ordinal) != 0) { throw new TrackingProfileDeserializationException(ExecutionStringManager.TrackingDeserializationInvalidPosition + "Conditions."); } if (!reader.IsEmptyElement) { while (true) { if (!reader.Read()) { throw new TrackingProfileDeserializationException(ExecutionStringManager.TrackingDeserializationCloseElementNotFound + "Conditions."); } switch (reader.NodeType) { case XmlNodeType.Element: if (string.Compare(reader.Name, "ActivityTrackingCondition", StringComparison.Ordinal) == 0) { ActivityTrackingCondition condition = new ActivityTrackingCondition(); this.CreateCondition(reader, condition); conditions.Add(condition); } break; case XmlNodeType.EndElement: if (string.Compare(reader.Name, "Conditions", StringComparison.Ordinal) == 0) { return; } break; } } } }