Сортировка XML-элементов по их логическому вхождению
Привет,
Я пытаюсь отсортировать XML (дочерние) элементы по их логическому вхождению. Предположим, что в файле есть следующие xml-элементы:
<row id="1"> <line1>value</line1> <line3>value</line3> </row> <row id="2"> <line1>value</line1> <line2>value</line2> <line3>value</line3> </row> <row id="3"> <line2>value</line2> <line4>value</line4> </row> <row id="4"> <line2>value</line2> <line3>value</line3> <line4>value</line4> </row>
В результате Я хотел бы иметь уникальный отсортированный список имен детей: "строка1, строка2, строка3, line4".
"lineXYZ" предназначены только для иллюстраций; означает: названия элементов могут быть разными. Поэтому алфавитная сортировка не может быть применена.
Во 2-й строке "line2 "является новым, но расположен перед" line3 "- по сравнению с предыдущей строкой - и поэтому должен быть ранжирован перед"line3".
В 3-й строке "line4" не существует в предыдущих записях и должен быть добавлен в конце.
Есть ли у кого-нибудь идеи, как этого можно достичь в C#?
Большое спасибо!
Что я уже пробовал:
К сожалению, ни codeproject, ни google до сих пор не предоставили никакого решения.
Patrice T
Покажите результат, который вы хотите получить для этого ввода.
Daniel Leykauf
Как уже упоминалось после xml-блока, я хотел бы иметь сортированные дочерние имена в виде списка unqiue: "line1, line2, line3, line4".
0x01AA
Хммм, XML следует использовать "обычно" без логической сортировки. Но на случай, если вам захочется их отсортировать, я предлагаю linq запросить его.
Daniel Leykauf
Спасибо за ваш ответ! Причина моего вопроса заключается в том, что я хочу визуализировать дочерние узлы в сетке (имена элементов имеют заголовок, строки перечислены с их значениями ниже). Имена заголовков должны отображаться в порядке следования дочерних элементов в зависимости от их вхождения (в родительском элементе). Но не все XML-файлы ссылаются на xsd-файл (где вы можете получить правильную позицию) или являются ложными и могут отсутствовать в каждой строке. Поэтому я должен разобрать каждый узел (в приведенном выше примере элемент "строка") и их дочерние элементы и построить отсортированный список.
Поэтому Linq to query не является альтернативой, так как я не знаю структуры XML-файла и не могу быть именами элементов в не алфавитном порядке, где только позиция описывает правильный порядок.
0x01AA
Добро пожаловать. Теперь я знаю только, как справиться с этим в стиле borland с помощью xslt, который обычно описывает структуру преобразования XML в "плоскую" таблицу, которую вы затем можете сортировать по своему усмотрению. Но да, я признаю, что это вам не поможет, извините :(
Daniel Leykauf
Еще раз спасибо (тоже за потраченное время)!