//public static bool ReadEntry<TEnum>(this XmlTextReader reader, string name, UndoRedoProperty<TEnum> property) where TEnum : struct //{ // TEnum value = default(TEnum); // if (reader.ReadEntry<TEnum>(name, ref value)) // { // property.SetValueDirect(value, false); // return true; // } // else // { // return false; // } //} //public static bool ReadEntry<T>(this XmlTextReader reader, string name, ref KeyValuePair<string, T> nameAndValue) where T : struct //{ // if (reader.LocalName.ToLower() == name.ToLower() && reader.HasAttributes) // { // if (reader.IsEmptyElement) // { // nameAndValue = default(KeyValuePair<string, T>); // return true; // } // string n = reader.GetAttribute("name"); // string type = reader.GetAttribute("type"); // reader.Read(); // if (reader.NodeType == XmlNodeType.EndElement) // { // nameAndValue = new KeyValuePair<string, T>(n, default(T)); // return true; // } // else if (reader.NodeType != XmlNodeType.Text && reader.NodeType != XmlNodeType.Whitespace) // { // System.Diagnostics.Debug.Fail("File-loading error!"); // throw new XmlDataReadingException("Error reading file element \"" + n + "\" in line " + reader.LineNumber + ". Expected text data in element. "); // } // string value = reader.ReadString(); // object created = TypeUtils.GetValueFromString(type, value); // nameAndValue = new KeyValuePair<string, T>(n, (T)created); // return true; // } // else // return false; //} public static void EatSection(this XmlTextReader reader) { if (reader.IsEmptyElement) { return; } while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: reader.EatSection(); break; case XmlNodeType.Text: reader.ReadString(); return; case XmlNodeType.EndElement: return; default: throw new XmlDataReadingException("Error reading file in line " + reader.LineNumber.ToString() + "."); } } throw new XmlDataReadingException("Error reading file. Unexpected end of file."); }