powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Трансформация XML
4 сообщений из 4, страница 1 из 1
Трансформация XML
    #39564185
aserdjuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,
помогите, пожалуйста, закончить временное, надеюсь, помутнение разума.

Есть xml с непостоянным количеством элементов вида
Код: xml
1.
2.
3.
4.
5.
6.
<document type="ir">
<XNODE n="F1_2_1" o="55">Complex</XNODE>
<XNODE n="F1_3_12" o="10">123456.00</XNODE>
<XNODE n="F1_3_12_VAL" o="11">RUB</XNODE>
<XNODE n="F1_3_14" o="53">5-10 yrs</XNODE>
<document>




Необходимо его преобразовать в xml вида
Код: xml
1.
2.
3.
4.
5.
6.
<document type="ir">
<F1_2_1>Complex</F1_2_1>
<F1_3_12>123456.00</F1_3_12>
<F1_3_12_VAL>RUB</F1_3_12_VAL>
<F1_3_14>5-10 yrs</F1_3_14>
</document>
...
Рейтинг: 0 / 0
Трансформация XML
    #39564861
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aserdjuk,

Добрый день.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
select 
--xmlserialize(content
xmlelement(
  name "document"
, xmlattributes('ir' AS "type")
, xmlagg(xmlparse(document '<'||t.n||'>'||t.v||'</'||t.n||'>'))
)
--as varchar(4000))
from table(values '
<document type="ir">
  <XNODE n="F1_2_1" o="55">Complex</XNODE>
  <XNODE n="F1_3_12" o="10">123456.00</XNODE>
  <XNODE n="F1_3_12_VAL" o="11">RUB</XNODE>
  <XNODE n="F1_3_14" o="53">5-10 yrs</XNODE>
</document>
') d(d)
, xmltable ('$d/document/XNODE' passing xmlparse(document d.d) as "d"
columns 
  N VARCHAR(20) path '@n'
, V VARCHAR(20) path '.'
) t;
...
Рейтинг: 0 / 0
Трансформация XML
    #39565761
aserdjuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,
cпасибо большое !
C большими xml и xmltable + xmlparse у меня возникает PMR R-0135**
Пока обошелся странной конструкцией
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
xmlquery('
transform 
copy $new := $doc
modify 
for $xnode in $new/RBdocument/XNODE
let $cn := $xnode/@n
return do rename $xnode as $cn
return $new ' passing  doc as "doc" ) 
...
Рейтинг: 0 / 0
Трансформация XML
    #39566685
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aserdjuk,

Но у вас же, судя по примеру, еще и удаление элементов.
Тогда так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
select 
xmlquery('
transform 
copy $new := $doc
modify 
for $xnode in $new/document/XNODE
let $cn := $xnode/@n
return (
  do delete $xnode/@o
, do delete $xnode/@n
, do rename $xnode as $cn
)
return $new
' passing xmlparse (document t.doc) as "doc" ) 
from table(values '
<document type="ir">
  <XNODE n="F1_2_1" o="55">Complex</XNODE>
  <XNODE n="F1_3_12" o="10">123456.00</XNODE>
  <XNODE n="F1_3_12_VAL" o="11">RUB</XNODE>
  <XNODE n="F1_3_14" o="53">5-10 yrs</XNODE>
</document>
') t(doc);
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Трансформация XML
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]