C# WinForms Чтение XML-файла - только определенные узлы
У меня есть файл XML:
<Database>
<SMS>
<Number>+447761692278</Number>
<DateTime>2009-07-27T15:20:32</DateTime>
<Message>Yes</Message>
<FollowedUpBy>Unassigned</FollowedUpBy>
<Outcome></Outcome>
<Quantity>0</Quantity>
<Points>0</Points>
</SMS>
<SMS>
<Number>+447706583066</Number>
<DateTime>2009-07-27T15:19:16</DateTime>
<Message>STOP</Message>
<FollowedUpBy>Unassigned</FollowedUpBy>
<Outcome></Outcome>
<Quantity>0</Quantity>
<Points>0</Points>
</SMS>
</Database>
В настоящее время я прочитал это в datagridview, используя это:
public void Read()
{
DataSet ds = new DataSet("SMS DataSet");
XmlDataDocument xmlDatadoc = new XmlDataDocument();
xmlDatadoc.DataSet.ReadXml(@"C:\Documents and Settings\Administrator\Desktop\RecSmsDB.xml");
ds = xmlDatadoc.DataSet;
this.dataGridView1.DataSource = ds;
this.dataGridView1.DataMember = "SMS";
this.dataGridView1.Sort(dataGridView1.Columns["DateTime"], ListSortDirection.Descending);
}
Я хочу иметь возможность читать только в XML-объекты, которые имеют определенный DateTime. Кто-нибудь знает способ сделать это? В настоящее время я пробовал различные методы, включенные в пространство имен, но безрезультатно.
Помощь очень ценится,
С уважением.
*** РЕДАКТИРОВАТЬ: я хочу иметь возможность динамически изменять данные, отображаемые во время выполнения.
2 ответа
Не то, чтобы я мог думать. Однако вы можете прочитать все данные в DataSet, затем создать DataView, который фильтрует таблицу SMS и привязывает вашу сетку к ней вместо DataTable.
Что если вы присоедините DataSet к BindingSource и подключите этот BindingSource к сетке? BindingSource имеет свойство Filter, где вы можете вводить SQL-подобные выражения.