Пример #1
0
        //internal static void LoadNodes<T>( this XmlReader reader, T obj,
        //    Action<T,string, List<AttributeValue>> nodeAction, string nodeName = null ) {
        //    var list = new List<AttributeValue>();
        //    while( reader.Read() ) {
        //        switch( reader.NodeType ) {
        //        case XmlNodeType.Element:
        //            string elmName = reader.Name;
        //            if ( nodeName == null || nodeName == elmName ) {
        //                list.Clear();
        //                reader.AddAttributes( list );
        //                nodeAction( obj, elmName, list );
        //            }
        //            SkipElement( reader );
        //            break;
        //        case XmlNodeType.EndElement:
        //            return;
        //        }
        //    }
        //}

        internal static void LoadNodes(this XmlReader reader, Action <string, List <AttributeValue> > nodeAction)
        {
            var list = new List <AttributeValue>();

            while (reader.Read())
            {
                switch (reader.NodeType)
                {
                case XmlNodeType.Element:
                    string elmName = reader.Name;
                    list.Clear();
                    reader.AddAttributes(list);
                    nodeAction(elmName, list);
                    SkipElement(reader);
                    break;

                case XmlNodeType.EndElement:
                    return;
                }
            }
        }