Javascript-форум (https://javascript.ru/forum/)
-   Библиотеки/Тулкиты/Фреймворки (https://javascript.ru/forum/library-toolkit-framework/)
-   -   Вывод xml в виде иерархического дерева (https://javascript.ru/forum/library-toolkit-framework/67803-vyvod-xml-v-vide-ierarkhicheskogo-dereva.html)

AlexTrader 09.03.2017 10:00

Вывод xml в виде иерархического дерева
 
Доброго времени суток, форумчане! Имеется xml вида:
<history>
                        <auditChangeList>
                        <row sTime='21.05.2017 12:57:01' autor='07A9C442-F6D4-4C4E-898D-1AD948F9BCC7'>
                        <changedItem propertyName='каталог №1'>
                        <oldValue>old</oldValue>
                        <newValue>new</newValue>
                        <propertyType>int</propertyType>
                        </changedItem>
<changedItem propertyName='каталог №11'>
                        <oldValue>old</oldValue>
                        <newValue>new</newValue>
                        <propertyType>int</propertyType>
                        </changedItem>
                        </row>
 <row sTime='20.05.2017' autor='08A9C442-F6D4-4C4E-898D-1AD948F9BCC7'>
                        <changedItem propertyName='каталог №2'>
                        <oldValue>old</oldValue>
                        <newValue>new</newValue>
                        <propertyType>string</propertyType>
                        </changedItem>
<changedItem propertyName='каталог №22'>
                        <oldValue>old</oldValue>
                        <newValue>new</newValue>
                        <propertyType>int</propertyType>
                        </changedItem>
                        </row>
                        </auditChangeList>
                        </history>

необходимо вывести её в виде иерархического справочника, смотрю в сторону kendoTreeLista, опыт по созданию kendoTreeLista есть, но там для построения иерархии необходимы поля id, parentId, у меня их нет, а если добавить неясно куда, буду рад любым советам

TestUser013 09.03.2017 12:51

Я имел опыт с кендо... Если дерево большое (больше 500 узлов), то рекомендую отказаться от их реализации, очень тормозит браузер (как на десктопах так и на мобильных платформах), рендеринг может падать до 5-10 fps.

Ну а если производительность не на первом месте, то просто добавьте поля id и parentId в ваш xml, а потом передавайте его в кендо.

AlexTrader 09.03.2017 14:57

Цитата:

Сообщение от TestUser013 (Сообщение 446817)
Я имел опыт с кендо... Если дерево большое (больше 500 узлов), то рекомендую отказаться от их реализации, очень тормозит браузер (как на десктопах так и на мобильных платформах), рендеринг может падать до 5-10 fps.

Ну а если производительность не на первом месте, то просто добавьте поля id и parentId в ваш xml, а потом передавайте его в кендо.

Да, я сталкивался с этим, проблема этого вопроса в том что нельзя дерево разбить на страницы. Я понимаю, что нужно добавить эти два поля, но куда конкретно?

TestUser013 09.03.2017 15:12

В идеале надо сделать так:
- на основе xml создать массив объектов, где каждый объект является нодой(узлом)
- к каждой полученному объекту надо добавить свойства id и parentId (для корневого узла parentId: null)

Я бы рекурсивно прошелся по xml документу, в роли id я бы сделал примитивный счетчик (index++), а по мере погружения в дочерние узлы передавал в эту рекурсивную функцию этот index в роли parentId.

ps: этот вариант более приемлемый для кендо так как ему не придется самостоятельно парсить xml документ и более приемлемый вообще, потому что вам в любом случаи надо пройтись по всему xml документу чтобы добавить необходимые свойства.

ps1: другое дело, если обновлять это "дерево" нужно часто, опять упретесь в потерю продуктивности...


Часовой пояс GMT +3, время: 20:59.