Вход

Просмотр полной версии : Вывод xml в виде иерархического дерева


AlexTrader
09.03.2017, 10:00
Доброго времени суток, форумчане! Имеется 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
Я имел опыт с кендо... Если дерево большое (больше 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: другое дело, если обновлять это "дерево" нужно часто, опять упретесь в потерю продуктивности...