Example #1
0
        //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.");
        }