//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; } } }