![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Vit |
|
||||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 1 Всего: 207 |
Требуется в общем-то тривиальная задача, но получающееся решение что-то меня не вдохновляет, какое-то некрасивое...
Требуется отсортировать сиблинги по значению атрибута. Поясню на примере Итак есть XML типа
Из него надо получить XML в котором бы все сиблинги были отсортированы по значению аттрибута "Order", т.е. получить следующий результат:
Есть ли какое-то более или менее толковое решение? -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
||||
|
|||||
Rififi |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 5 Всего: 36 |
а нафига зачем нужна такая сортировка?
|
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 1 Всего: 207 |
XML используется в третьестороннем приложении в качестве шаблона, приложение в соотвествии с ним строит GUI, к сожалению порядок имеет значение, так как элементы GUI должны следовать в порядке назначенном элементом Order, а не в порядке физического следования сиблингов.
![]() В данном случае требуется из одного XML файла получить другой. И точка... Спорить зачем это кому-то надо не требуется... Типа если кому-то надо получить из файла png файл pcx можно до хрипоты доказывать что png во много раз лучше pcx... но задание то от этого не меняется! -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Dblma |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 6.11.2007 Где: Moscow Репутация: нет Всего: 1 |
Я не подскажу конкретного решения, но могу предложить глянуть LINQ.
http://msdn2.microsoft.com/ru-ru/library/b...960(en-us).aspx |
|||
|
||||
mr.DUDA |
|
||||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Если делать руками, то так:
З.Ы. кстати твой XML невалидный, исправил:
-------------------- ![]() |
||||
|
|||||
Rififi |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 5 Всего: 36 |
Vit,
не волнуйся ты так, и береги нервы :gigi: указанная задача решается с помощью .NET 3.5 и Linq to XML, или XSLT, или даже XQuery первое проще всего, вот небольшой пример для подузла child1, остальное - по аналогии.
Это сообщение отредактировал(а) Rififi - 1.4.2008, 12:12 |
||||
|
|||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 1 Всего: 207 |
Спасибо! Ну я ж не реальный XML дал, а так, то что от руки набросал, чтобы только смысл передать... .NET 3.5 - не подходит, задачу надо решить в 2.0 Linq to XML, или XSLT, или даже XQuery - к сожалению не знаком с этими технологиями, но посмотрю. -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Rififi |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 5 Всего: 36 |
а тебя не бесит, когда задается вопрос, а потом выясняется что вот этого нельзя, потому что у меня не то, а это вообще не так? ![]() |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Rififi, если явно не указано на какой платформе нужно решение, подразумевается наиболее широко распространённая на данный момент. Сейчас актуальнее всего 2.0, под 3.5 слишком мало софта. Будем считать тему платформы закрытой.
P.S. может быть можно то же самое сделать на XPath/XQuery, но с этими технологиями знаком слабо, поэтому привёл простейший вариант "в лоб"
-------------------- ![]() |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 1 Всего: 207 |
mr.DUDA, спасибо!
Способ работает, пришлось сделать небольшую рехтовку под местные условия, но это мелочи. Большое спасибо! -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
You are welcome
![]() -------------------- ![]() |
|||
|
||||
butalex11 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 27.12.2011 Репутация: нет Всего: нет |
Здравствуйте! Очень нужна такая же сортировка, как у топикстартера, только нужно по текстовым аттрибутам, а не по int... Можете подсказать, пожалуйста, как изменить код, который написал mr.DUDA ? Заранее спасибо...
Это сообщение отредактировал(а) butalex11 - 27.12.2011, 13:40 |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [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. |