| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Сортировка XML |
| Автор: Vit 31.3.2008, 20:33 | ||||
| Требуется в общем-то тривиальная задача, но получающееся решение что-то меня не вдохновляет, какое-то некрасивое... Требуется отсортировать сиблинги по значению атрибута. Поясню на примере Итак есть XML типа
Из него надо получить XML в котором бы все сиблинги были отсортированы по значению аттрибута "Order", т.е. получить следующий результат:
Есть ли какое-то более или менее толковое решение? |
| Автор: Rififi 31.3.2008, 22:31 |
| а нафига зачем нужна такая сортировка? |
| Автор: Vit 1.4.2008, 02:07 |
| XML используется в третьестороннем приложении в качестве шаблона, приложение в соотвествии с ним строит GUI, к сожалению порядок имеет значение, так как элементы GUI должны следовать в порядке назначенном элементом Order, а не в порядке физического следования сиблингов. В данном случае требуется из одного XML файла получить другой. И точка... Спорить зачем это кому-то надо не требуется... Типа если кому-то надо получить из файла png файл pcx можно до хрипоты доказывать что png во много раз лучше pcx... но задание то от этого не меняется! |
| Автор: Dblma 1.4.2008, 09:54 |
| Я не подскажу конкретного решения, но могу предложить глянуть LINQ. http://msdn2.microsoft.com/ru-ru/library/bb308960(en-us).aspx |
| Автор: mr.DUDA 1.4.2008, 10:28 | ||||
Если делать руками, то так:
З.Ы. кстати твой XML невалидный, исправил:
|
| Автор: Rififi 1.4.2008, 12:08 | ||||
Vit,
не волнуйся ты так, и береги нервы :gigi: указанная задача решается с помощью .NET 3.5 и Linq to XML, или XSLT, или даже XQuery первое проще всего, вот небольшой пример для подузла child1, остальное - по аналогии.
|
| Автор: Rififi 1.4.2008, 15:49 | ||
а тебя не бесит, когда задается вопрос, а потом выясняется что вот этого нельзя, потому что у меня не то, а это вообще не так? |
| Автор: mr.DUDA 1.4.2008, 16:41 | ||
| Rififi, если явно не указано на какой платформе нужно решение, подразумевается наиболее широко распространённая на данный момент. Сейчас актуальнее всего 2.0, под 3.5 слишком мало софта. Будем считать тему платформы закрытой. P.S. может быть можно то же самое сделать на XPath/XQuery, но с этими технологиями знаком слабо, поэтому привёл простейший вариант "в лоб"
|
| Автор: Vit 3.4.2008, 17:37 |
| mr.DUDA, спасибо! Способ работает, пришлось сделать небольшую рехтовку под местные условия, но это мелочи. Большое спасибо! |
| Автор: mr.DUDA 3.4.2008, 20:08 |
| You are welcome |
| Автор: butalex11 27.12.2011, 13:38 |
| Здравствуйте! Очень нужна такая же сортировка, как у топикстартера, только нужно по текстовым аттрибутам, а не по int... Можете подсказать, пожалуйста, как изменить код, который написал mr.DUDA ? Заранее спасибо... |