Частичное чтение 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();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д