|
|
|
XML - вставка с изменениями по условию
|
|||
|---|---|---|---|
|
#18+
У меня есть два XML и один нужно вставить в другой. Если узла с таким атрибутом ID нет - то просто добавляем в конец. Если узел с таким атрибутом ID есть, то имеющиеся нижестоящие узлы нужно "сдвинуть винз" инкрементировав их атрибут ID. Подскажите пожалуйста, какими хоть функциями это лучше сделать? сюда нужно вставить: Код: plsql 1. Вот это: Код: plsql 1. В результате получаем: Код: plsql 1. В примере показана ситуация, когда элемент с таким ID уже был - там, куда вставляем, и поэтому все "нижестоящие" узлы увеличили свой ID. Видимо, эта задача разбивается на три шага - получить индекс элемента с таким же ID, если он есть - инкрементировать ID нижестоящих элементов - вставить выше найденного индекса, или добавить в конец Думаю так добавить в конец - appendChildXML инкрементировать - updateXML поиск делать спец. запросом. Или можно как-то обьединить эти три шага. Может, я просто не знаю пока какой-то специальный метод, который лучше подходит к этой задаче? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 09:43 |
|
||
|
XML - вставка с изменениями по условию
|
|||
|---|---|---|---|
|
#18+
В рамках именно этого форума проще будет десериализовать, преобразовать, сериализовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 10:06 |
|
||
|
XML - вставка с изменениями по условию
|
|||
|---|---|---|---|
|
#18+
ElicВ рамках именно этого форума проще будет десериализовать, преобразовать, сериализовать. Извлечь, Преобразовать, Загрузить :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 12:59 |
|
||
|
XML - вставка с изменениями по условию
|
|||
|---|---|---|---|
|
#18+
XMLerElicВ рамках именно этого форума проще будет десериализовать, преобразовать, сериализовать. Извлечь, Преобразовать, Загрузить :) Это другая ветка - про ODI, Informatica, SAS DI и иже с ними :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 13:02 |
|
||
|
XML - вставка с изменениями по условию
|
|||
|---|---|---|---|
|
#18+
ART-CODEинкрементировать - updateXML Думаю что на этом шаге ты остановишься и определишься: либо только XMLTABLE, преобразование таблицы средствами sql, обратно в XML либо написать xquery ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 13:17 |
|
||
|
XML - вставка с изменениями по условию
|
|||
|---|---|---|---|
|
#18+
ART-CODEЕсли узел с таким атрибутом ID есть, то имеющиеся нижестоящие узлы нужно "сдвинуть винз" инкрементировав их атрибут ID. Т.е. ID в Вашем случае идентифицирующим атрибутом не является. Это просто некая абстрактная нумерация. Решается просто: НЕ храните такой "ID" в XML. Просто нумеруйте узлы при парсинге. К примеру, XMLTable позволяет описать такой атрибут "for ordinality" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 13:28 |
|
||
|
XML - вставка с изменениями по условию
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы. Видимо, придется разбирать куда-то - во временную таблицу. andrey_anonymousНЕ храните такой "ID" в XML Так это же не я, а Excel :) Я пытаюсь вставить строки в Sheet.xml файла xlsx, и при этом нужно сдвинуть все, что есть на листе - вниз при вставке моих строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 14:08 |
|
||
|
XML - вставка с изменениями по условию
|
|||
|---|---|---|---|
|
#18+
ART-CODEВидимо, придется разбирать куда-то - во временную таблицу. в смысле GTT? а чем такая таблица для преобразования плохя? Код: plsql 1. 2. 3. 4. 5. И все же покури XQUERY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 09:52 |
|
||
|
XML - вставка с изменениями по условию
|
|||
|---|---|---|---|
|
#18+
Пока вот что получилось: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Результат: Код: plsql 1. 2. Здесь "магические" цифры: 2 - это номер ячейки Excel, начиная с которой - вставляем свои строки. 1 - количество вставляемых строк Все это будет известно заранее. Если к такому решению серьезных замечаний нет, то попробую все это провернуть на реальной структуре файла sheet.xml ( а она немного отличается). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 00:05 |
|
||
|
XML - вставка с изменениями по условию
|
|||
|---|---|---|---|
|
#18+
Ой, только, что-то я с псевдонимами напутал - у меня там две разных "t" в одном куске кода. Хотя и работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 00:11 |
|
||
|
XML - вставка с изменениями по условию
|
|||
|---|---|---|---|
|
#18+
И похоже, что "order by" в моем коде не работает. Надо думать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 09:00 |
|
||
|
XML - вставка с изменениями по условию
|
|||
|---|---|---|---|
|
#18+
Перенес сортировку внутрь xmlagg. Теперь сортирует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 09:07 |
|
||
|
XML - вставка с изменениями по условию
|
|||
|---|---|---|---|
|
#18+
Интересно, что дома - работало, а на работе получил ORA-22950 "невозможно сортировать без методов MAP или ORDER". Версия на работе 11g Release 11.2.0.3.0 64 bit. Как обычно - надо думать что с этим делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 10:33 |
|
||
|
XML - вставка с изменениями по условию
|
|||
|---|---|---|---|
|
#18+
ART-CODE, не вникал, что ты делаешь, но на Код: plsql 1. работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 10:50 |
|
||
|
XML - вставка с изменениями по условию
|
|||
|---|---|---|---|
|
#18+
Работает: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 10:51 |
|
||
|
XML - вставка с изменениями по условию
|
|||
|---|---|---|---|
|
#18+
Ну, вот - дошли руки до разбора ячеек из настоящего sheet.xml, и столкнулся с проблемой - в полученные ячейки зачем-то дописывается "неймспейс" из worksheet. Как от этого эффекта избавиться? Извлечение ячеек: Код: plsql 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. Проблема в том, что получаем: Код: plsql 1. 2. а нужно: Код: plsql 1. --- (Если из xmltable убрать XMLNamespaces, то вообще не получаю ячейки.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2017, 16:20 |
|
||
|
XML - вставка с изменениями по условию
|
|||
|---|---|---|---|
|
#18+
Нет, конечно можно совсем выкинуть явное указание XMLNamespaces и написать так: Код: plsql 1. Но, к сожалению, и в этом случае Оракл зачем-то дописывает "неймспейс" в каждую полученную ячейчку, хотя никто не просил его это делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2017, 17:38 |
|
||
|
XML - вставка с изменениями по условию
|
|||
|---|---|---|---|
|
#18+
ART-CODEхотя никто не просил его это делатьТехподдержку проплатил? - Дискутируй с ней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2017, 21:03 |
|
||
|
XML - вставка с изменениями по условию
|
|||
|---|---|---|---|
|
#18+
Все, готова процедура вставки строк на лист. Добавляемые строки должны быть предварительно собраны как XML. Забавно, что проверить эту процедуру не могу - при попытке компиляции получаю "коннекшен лост" или бесконечное ожидание. Или моя виртуалка с Ораклом накрылась или процедуру-убийцу написал. Код: plsql 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. --- Elic, платной поддержки нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2017, 01:04 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39479487&tid=1885677]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
183ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 242ms |
| total: | 544ms |

| 0 / 0 |
