Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2015, 13:12   #1
ka11n
Пользователь
 
Регистрация: 05.05.2009
Сообщений: 20
По умолчанию XmlTextReader. Как перейти к первому узлу

Код:
using (var reader = new XmlTextReader(_sAppSetting))
{
    while (reader.Read())
    {
        ///Какая-то обработка             
    }
    //Здесь необходимо вернуться к первому узлу
}
Метод Read считывает узел и переходит к следующему, и так до конца.
После этого мне необходимо вернуться опять к первому узлу.
Как это сделать?

Последний раз редактировалось ka11n; 22.07.2015 в 13:37.
ka11n вне форума Ответить с цитированием
Старый 22.07.2015, 14:28   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

пересоздать ридер, он позволяет идти только вперед из любого источника(и не каждый источник позволяет возврат в принципе)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.07.2015, 14:52   #3
ka11n
Пользователь
 
Регистрация: 05.05.2009
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
пересоздать ридер
Именно так я и реализовал. Хотелось просто уйти от многократной загрузки файла. На скорость работы критично это не влияет, в моем случае, но мне кажется это неправильно, думал может есть решение. Например, как метод Seek для FileStream

Последний раз редактировалось ka11n; 22.07.2015 в 14:54.
ka11n вне форума Ответить с цитированием
Старый 22.07.2015, 15:35   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

если вам нужно читать несколько раз то вы или читайте несколько раз, или один раз разбирайте в XmlDocument/XDocument и с ним работайте.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.07.2015, 20:26   #5
Akeloya
Форумчанин
 
Регистрация: 27.01.2014
Сообщений: 115
По умолчанию

Цитата:
Сообщение от ka11n Посмотреть сообщение
Код:
using (var reader = new XmlTextReader(_sAppSetting))
{
    while (reader.Read())
    {
        ///Какая-то обработка             
    }
    //Здесь необходимо вернуться к первому узлу
}
Метод Read считывает узел и переходит к следующему, и так до конца.
После этого мне необходимо вернуться опять к первому узлу.
Как это сделать?
Попробуйте Linq to XML. Вы будете работать всегда с коллекциями IEnumerable<T> и выбирать данные по условию (если необходимо).
Соответственно первый узел - первый элемент коллекции, последний узел из коллекции - последний элемент коллекции.

Но судя по тому, что вы пытаетесь реализовать настройки приложения, чем вас стандартный механизм настроек не устраивает? Вы ведь можете стандартный app.config расширить секциями как вам заблагорассудится и хмл будет парситься в момент загрузки приложения, а вы будете работать с объектной моделью.
http://habrahabr.ru/post/128517/
https://msdn.microsoft.com/en-us/lib...v=vs.140).aspx
Akeloya вне форума Ответить с цитированием
Старый 23.07.2015, 11:17   #6
ka11n
Пользователь
 
Регистрация: 05.05.2009
Сообщений: 20
Хорошо

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
XmlDocument/XDocument и с ним работайте.
Спасибо, получилось!

Цитата:
чем вас стандартный механизм настроек не устраивает?
Не нравилось то, что настройки сохраняются в каталог пользователя, а не в каталог программы. Еще какие-то причины были, не помню... Может просто "недокурил" тему. Спасибо за ссылки, попробую разобраться

Последний раз редактировалось Stilet; 31.07.2015 в 08:16.
ka11n вне форума Ответить с цитированием
Старый 23.07.2015, 11:58   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Если вы пишете нормальную прогу которая будут устанавливать то используйте доступные папки,(папка пользователя или общая).
если портабл(и только тогда) то рядом.
ибо начиная с Vista и выше в Program Files писать без прав админа.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 30.07.2015, 11:55   #8
Akeloya
Форумчанин
 
Регистрация: 27.01.2014
Сообщений: 115
По умолчанию

Цитата:
Сообщение от ka11n Посмотреть сообщение
Спасибо, получилось!

Код:
чем вас стандартный механизм настроек не устраивает?
Не нравилось то, что настройки сохраняются в каталог пользователя, а не в каталог программы. Еще какие-то причины были, не помню... Может просто "недокурил" тему. Спасибо за ссылки, попробую разобраться
Если вы заглянете в настройки приложения (Properties\Settings.settings), то вы увидите там область нахождения настроек, пользовательская или приложения.
Пользовательская - это личные настройки пользователя, хранящиеся в его профиле, а настройки приложения будут храниться в app.config файле.
Точнее <progName>.exe.config.
таким образом вы можете разбрасывать настройки по двум каталогам без особых телодвижений.
Akeloya вне форума Ответить с цитированием
Старый 30.07.2015, 14:26   #9
ka11n
Пользователь
 
Регистрация: 05.05.2009
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Akeloya Посмотреть сообщение
без особых телодвижений.
Это как раз куча телодвижений - настройки..., пользователи.., разные папки...
Мне необходимо чтобы хранились настройки пары-тройки чекбоксов, текст боксов и т.д. Прогу скопировал на флеху и в путь, а не искать по всяким папкам эти настройки.
Проблема решена с помощью xmlDocument.

Всем спасибо за участие!
ka11n вне форума Ответить с цитированием
Старый 30.07.2015, 15:37   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я часто настройки вообще сериализацией храню.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доступ к узлу SharePoint из кода C# leo55 ASP.NET 0 07.10.2011 19:15
К первому новому сообщению Как сделать , чтобы после ввода ключегого слова в edit программа переходила к gefest58 Общие вопросы Delphi 2 22.10.2010 00:36
как перейти на сайт kuzmich Общие вопросы Delphi 2 01.06.2009 21:12
Как перейти на ячейку komar73 Microsoft Office Excel 2 09.02.2009 13:30
Сертификат безопасности при доступе к web-узлу ss@sh Microsoft Office Excel 0 01.10.2008 15:49