Я пытаюсь прочитать все атрибуты в элементах «Данные» из XML-файла и отобразить их в DataGrid (WPF, .Net 4.0)
XML в формате, показанном ниже.
<root>
<Data Name1="Value1" Name2="Value2" ... />
<Data Name1="Value1" Name2="Value2" ... />
...
</root>
Я не имею представления об использованных именах атрибутов (например, Name1, Name2, Foo и т. Д.) Или количестве атрибутов в каждом элементе (потенциально различное количество атрибутов для каждого элемента). Каждый новый элемент должен отображаться в новой строке, а каждый атрибут соответствует столбцу (если он не существует для этой строки, отображать ноль).
Я изо всех сил пытаюсь создать вспомогательный класс, к которому должна быть привязана сетка данных, или создать все это программно.
Моя текущая попытка - создать набор текстовых столбцов (учитывая список имен столбцов для использования на основе того, что я извлек из XML-файла)
List<string> dataTags = ...; //get list of attributes to use from xml
foreach (string d in dataTags) {
DataGridTextColumn col = new DataGridTextColumn();
col.Header = d;
dataGrid.Columns.Add(col);
}
Затем я перебираю каждый атрибут и добавляю его в список (для представления строки, отображаемой в сетке данных), если имя атрибута соответствует одному из значений заголовка
foreach (XElement e in xml.Descendants("Data")) {
//Store values to be added to the datagrid as a new row
List<string> row = new List<string>();
//Only add data where the attribute name matches one of the 'dataTags' we are given.
foreach(string d in dataTags) {
foreach (XAttribute a in e.Attributes()) {
if (d.Equals(a.Name.ToString())) {
row.Add(a.Value);
break;
}
}
}
//Add new row to the datagrid
dgData.Items.Add(row);
}
Я в некотором роде ... но у меня есть сетка данных с пустыми строками (правильное количество строк, но теперь отображаются данные).
Буду признателен за любые советы / указатели.