Если вам не разрешено изменять схему, скорее всего, схема не изменится. (Если это неверное предположение, пожалуйста, дайте мне знать.) В этом случае использование XmlSerializer может быть излишним. Почему бы не использовать Linq to XML?
class Program
{
static void Main(string[] args)
{
XDocument doc = XDocument.Load(@".\Resources\Sample.xml");
var columns = from column in doc.Descendants("COLUMNS").Descendants()
select new Column(column.Name.LocalName, int.Parse(column.Attribute("WIDTH").Value));
foreach (var column in columns)
Console.WriteLine(column.Name + " | " + column.Width);
}
class Column
{
public string Name { get; set; }
public int Width { get; set; }
public Column(string name, int width)
{
this.Name = name;
this.Width = width;
}
}
}
Приведенный выше фрагмент кода загружает ваш образец XML, а затем создает из него перечисление столбцов. Просто и эффективно. Однако для этого требуется .NET 3.0 или более поздняя версия, поэтому, если это не вариант для вас, к сожалению, это не решение для вас.
Ссылка на документацию Microsoft Linq to XML:
http://msdn.microsoft.com/en-us/library/bb387098.aspx