Попробуйте использовать Xml Linq:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.Data;
using System.Globalization;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
DataTable dt = new DataTable();
dt.Columns.Add("RequestID", typeof(int));
dt.Columns.Add("TransactionID", typeof(string));
dt.Columns.Add("Status", typeof(string));
dt.Columns.Add("Date", typeof(DateTime));
dt.Columns.Add("DueDate", typeof(DateTime));
dt.Columns.Add("Currency", typeof(string));
dt.Columns.Add("PaymentAmount", typeof(decimal));
dt.Columns.Add("SourceAccount", typeof(string));
dt.Columns.Add("SupplierName", typeof(string));
dt.Columns.Add("SupplierAccount", typeof(string));
dt.Columns.Add("MessageText", typeof(string));
dt.Columns.Add("MessageDescription", typeof(string));
XDocument doc = XDocument.Load(FILENAME);
Dictionary<string, Dictionary<string, string>> summary = doc.Descendants("Summary").Elements()
.GroupBy(x => x.Name.LocalName, y => y.Attributes()
.GroupBy(a => a.Name.LocalName, b => (string)b)
.ToDictionary(a => a.Key, b => b.FirstOrDefault()))
.ToDictionary(x => x.Key, y => y.FirstOrDefault());
foreach (XElement transaction in doc.Descendants("Transaction"))
{
dt.Rows.Add(new object[] {
(int)transaction.Attribute("RequestID"),
(string)transaction.Attribute("TransactionID"),
(string)transaction.Attribute("Status"),
DateTime.ParseExact((string)transaction.Attribute("Date"), "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture),
DateTime.ParseExact((string)transaction.Attribute("DueDate"), "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture),
(string)transaction.Attribute("Currency"),
decimal.Parse((string)transaction.Attribute("PaymentAmount")),
(string)transaction.Attribute("SourceAccount"),
(string)transaction.Attribute("SupplierName"),
(string)transaction.Attribute("SupplierAccount"),
(string)transaction.Attribute("MessageText"),
(string)transaction.Attribute("MessageDescription")
});
}
}
}
}