![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
У объекта класса XmlTextReader есть метод ReadToNextSibling(string), здесь нужно указать имя sibling-элемента, к которому нужно перейти.
Мне нужно перейти к следующемуsibling-элементу (какое-бы имя он не имел), не заходя внутрь текущего элемента... Можно ли это сделать с помощью XmlReader'ов (т.е. используя SAX-интерфейс) или без DOM-модели не обойтись ? |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
ИМХО, нет.
Последовательный читатель не может пропустить ни одного элемента XML-документа. -------------------- ![]() |
|||
|
||||
CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Вопрос не верно понят !!!
Пусть методы последовательно читают все элементы, главное, чтобы метод вернул объект XmlReader, указывающий на следующий sibling-элемент (относительно текущего элемента). Пример: <elem_1> </elem_1> <elem_2> <elem_2> </elem_2> </elem_2> <elem_3> </elem_3> Текущая позиция - внешний <elem_2>. Мне нужно получить XmlReader, указывающий на <elem_3>. Имя элемента <elem_3> неизвестно. Известно лишь, что он является следующим братом для внешнего <elem_>2 Для использования метода ReadToNextSibling(string) нужно знать имя брата, в данном случае имя брата неизвестно. А метода ReadToNextSibling() нет... |
|||
|
||||
CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Складывается впечатление, что с XmlReader'ами никто не работал...
Мне всего-навсего нужно перейти на элемент-брата, т.е. что-то вроде ReadToNextSibling, но без указания имени этого брата... Если здраво рассуждать, то в первую очередь должен был быть реализован метод ReadToNextSibling(), а уже потом - ReadToNextSibling(string)... |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Что реализовано в FCL, то реализовано. Если нельзя быстро перейти к следующему сиблингу (без зачитки всего документа), значит нельзя. Хотя, кажется мне, слабовато вы копали в мсдн - такая функциональность просто обязана присутствовать
![]() -------------------- ![]() |
|||
|
||||
CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Всё, нашёл - Skip() - пропускает все дочерние узлы.
Собственно, GoToNextSibling() и есть... |
|||
|
||||
CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Поправляюсь: похож на GoToNextSibling(), когда указатель находится на узле-элементе (в терминах System.Xml).
Только плохо, что при отсутствии sibling-элемента, когда Skip() перемещает указатель на узел-элемент уровня выше, чем имеют перебираемые узлы-элементы (с внутреннего <elem_2> Skip() перемещает нас на <elem_3>), приходится проверять Depth, т.к. Skip() возвращает void... Гораздо удобнее было бы, если (наряду со Skip'ом) был бы реализован метод GoToNextSibling без параметров, возвращающий false, если следующего брата нет... Собственно, из таких соображений смею заявить, что это очередная недоработка C#, а вернее классов из System.Xml... |
|||
|
||||
Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
![]() ![]() Это сообщение отредактировал(а) Naum - 25.1.2007, 11:09 -------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
В Framework 2.0 тоже нет метода GoToNextSibling()...
|
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
-------------------- ![]() |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |