Сейчас перевожу систему с oracle на postgresql. Есть задача: в процедуру приходит xml нужно ее изменить и отдать назад. В oracle я из xml делал коллекцию с помощью XMLDOM, менял коллекцию потом преобразовывал ее назад в xml. Вопрос как в postgresql преобразовать xml в коллекцию определенного типа или может кто нибудь подскажет другой способ как изменить на ходу xml.
Asked
Active
Viewed 178 times
5
-
1Можете добавить пример для поиграться? Пример на входе и ожидаемый для этого параметра результат. Кучка функций у pg есть: https://www.postgresql.org/docs/current/static/functions-xml.html Но не доводилось XML обрабатывать в базе, в отличии от json. – Мелкий Feb 16 '17 at 06:43
-
Подозреваю, что с json работать было бы удобнее. – ilyaplot Feb 16 '17 at 06:55
-
к сожалению мне передается только xml ,поменять это нельзя – heff Feb 16 '17 at 07:01
-
Так что насчёт примера данных и желаемого результата? Я бы поигрался с задачей, но не понятно, что именно надо получить. – Мелкий Feb 16 '17 at 15:28
1 Answers
1
Вот ответ на вопрос "как преобразовать xml в коллекцию определенного типа":
SELECT unnest(xpath('text()', node))::text as val,
unnest(xpath('@id', node))::text::int as id
FROM unnest(xpath('l',
'<root>
<l id="1">value 1</l>
<l id="2">value 2</l>
<l id="3">value 3</l>
<l id="4">value 4</l>
</root>'::xml
)) as node
Меняете данные, потом обратно в xml. Наверно это можно назвать "на ходу".
whintu
- 184