Я использую этот код ...
Для создания XML:
// you need to create a datatable, from a sql query, linq, your choice...
DataTable _dt = new DataTable();
// write the datatable with schema
dt.WriteXml("datatable.xml", XmlWriteMode.WriteSchema);
Чтобы прочитать XML:
DataTable dt = new DataTable ();
dt.Clear();
dt.ReadXml("datatable.xml", XmlReadMode.ReadSchema);
Результат с данными можно дополнить этими функциями, таким образом, вы можете преобразовать его в IList
, вам нужно создать объект с таким же шаблоном столбцов, это действительно более практично:
public IList<T> toList<T>(DataTable table)
{
List<T> list = new List<T>();
T item;
Type listItemType = typeof(T);
for (int i = 0; i < table.Rows.Count; i++)
{
item = (T)Activator.CreateInstance(listItemType);
mapRow(item, table.Rows[i], listItemType);
list.Add(item);
}
return list;
}
private void mapRow(object vOb, System.Data.DataRow dr, Type type)
{
try
{
for (int col = 0; col < dr.Table.Columns.Count; col++)
{
var columnName = dr.Table.Columns[col].ColumnName;
var prop = type.GetProperty(columnName.ToUpper());
object data = dr[col];
prop.SetValue(vOb, data, null);
}
}
catch (Exception ex)
{
throw ex;
}
}
На самом деле я работаю над приложением, использующим XML, сгенерированный из таблиц SQL. В основном, используя вышеописанные функции, я создаю другое небольшое приложение (для поддержки первого), которое сканирует пакет XML (XML на таблицу) и создает бизнес-слои, доступ, объект и управление потоком для правильной записи и чтения XML.