|
Преобразование XML дерева
|
|||
---|---|---|---|
#18+
Необходимо осуществить преобразование дерева XML: Т.е. имеется XML документ вида Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Код: plaintext 1.
Пока получилось что-то типа нижепоказанного, но код самому не нравится - очень много проходов по XML. Чувствую, что все можно сделать намного эффективнее, но как - пока допереть не могу. Может, кто поможет бедному студенту. Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2011, 13:22 |
|
Преобразование XML дерева
|
|||
---|---|---|---|
#18+
Необходимо осуществить преобразование дерева XML: Т.е. имеется XML документ вида Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Необходимо получить XML такого вида: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
Пока получилось что-то типа нижепоказанного, но код самому не нравится - очень много проходов по XML. Чувствую, что все можно сделать намного эффективнее, но как - пока допереть не могу. Может, кто поможет бедному студенту. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2011, 13:44 |
|
Преобразование XML дерева
|
|||
---|---|---|---|
#18+
Элементарно, Ватсон, методом рекурсии. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
in Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
out Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61.
Эти свои value сам впихни куда надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2011, 15:39 |
|
Преобразование XML дерева
|
|||
---|---|---|---|
#18+
Упс, почистить забыл второпях... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2011, 15:40 |
|
Преобразование XML дерева
|
|||
---|---|---|---|
#18+
Рабинович, нашлись ложечки. Всё в порядке. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2011, 15:46 |
|
Преобразование XML дерева
|
|||
---|---|---|---|
#18+
оппа, только сейчас заметил parent_id. Ну извиняй, если что не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2011, 15:57 |
|
Преобразование XML дерева
|
|||
---|---|---|---|
#18+
Ну вот так работает, но не уверен, что оптимально. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2011, 17:05 |
|
Преобразование XML дерева
|
|||
---|---|---|---|
#18+
Если есть parent_id, level - избыточная информация. Этим ты меня и сбил с толку первоначально. В общем, если оптимизируешь - выкладывай, не стесняйся. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2011, 17:56 |
|
Преобразование XML дерева
|
|||
---|---|---|---|
#18+
В результате тоже додумался до рекурсии. Спасибо, что подтвердили направление движения. level, кстати, инфа совсем нелишняя. Если известен максимальный уровень вложенности, то позволяет отсечь лишние запросы. Но это уже бантики. Смущает только слишком много запросов. Вот бы как-нибудь одним запросом обойтись. Мечта... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2011, 18:34 |
|
|
start [/forum/topic.php?fid=17&fpage=42&tid=1350655]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
100ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 196ms |
0 / 0 |