Частичное чтение XML-файла - C#
Формулировка задачи:
Собственно, вопрос по реализации. Как лучше это сделать? Посчитать все узлы и пропустить все -n узлов, а оставшиеся считать? Больше идей нет.
Примерам с кодом буду благодарен.
Сам файл имеет следующую структуру:
<?xml version="1.0" encoding="utf-8"?>
<Messages>
<Message msgType="from">
<usrSecond>Example</usrSecond>
<date>17.05.2015 5:42:14</date>
<message>test message</message>
</Message>
<Message msgType="to">
<usrSecond>Example</usrSecond>
<date>17.05.2015 6:43:14</date>
<message>TEST</message>
</Message>
</Messages>
Решение задачи: «Частичное чтение XML-файла»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using System.Xml.XPath;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var xml = @"
<Messages>
<Message msgType='from'>
<usrSecond>Example</usrSecond>
<date>17.05.2015 5:42:14</date>
<message>test message</message>
</Message>
<Message msgType='to'>
<usrSecond>Example</usrSecond>
<date>17.05.2015 6:43:14</date>
<message>TEST</message>
</Message>
</Messages>
";
var xdoc = XDocument.Parse(xml);
var n = 1; // Задаем количество пропущенных узлов.
var resul = xdoc.XPathSelectElements("//Messages/Message[count(preceding::Message[name(..) = 'Messages']) >= " + n.ToString() + "]");
foreach (XElement xe in resul) Console.WriteLine(xe.ToString());
Console.WriteLine("Ready");
Console.ReadKey();
}
}
}