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-подобные выражения.

Другие вопросы по тегам