using System.Collections;
using System.Collections.Generic;
public static class Program
public static void Main(string[] args)
const string xml = @"<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>
<DATAPACKET Version=""2.0"">
<FIELD attrname=""ALMO_Exercicio"" fieldtype=""string"" WIDTH=""4""/>
<FIELD attrname=""ALMO_MesReferencia"" fieldtype=""string"" WIDTH=""2""/>
<FIELD attrname=""ALMO_Saldo"" fieldtype=""string"" WIDTH=""17""/>
<ROW ALMO_Exercicio=""2016"" ALMO_MesReferencia=""01"" ALMO_Saldo=""0.00""/>
var doc = XDocument.Parse(xml);
var columns = doc.Descendants("FIELD")
.Select(fieldName => new DataColumn(fieldName.Value))
var rows = doc.Descendants("ROW")
.Select(row => columns.Select(column => (string) row.Attribute(column.ColumnName)).ToArray());
var table = new DataTable();
table.Columns.AddRange(columns);
foreach (var row in rows)
Console.WriteLine(Line(columns.Select(x => x.ColumnName)));
foreach (DataRow row in table.Rows)
Console.WriteLine(Line(row.ItemArray));
private static string Line(IEnumerable<object> items)
return string.Concat(items.Select(x => $"{x,-20}"));