powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вытащить часть xml-стоки
25 сообщений из 26, страница 1 из 2
Вытащить часть xml-стоки
    #39649553
GroMoZeKazzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть вот такая
строка<block><number>0</number><SysID></SysID><errorcode>-1</errorcode><errortext>ТЕКСТ_ОШИБКИ</errortext></block><block><number>1</number><SysID></SysID><errorcode>1</errorcode><errortext></errortext></block>

Хочу выбрать только "ТЕКСТ_ОШИБКИ". Можно конечно наколбасить substr/instr, но это как-то не красиво. Как можно без substr/instr получить искомое?
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39649558
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM xmltype.extract
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39649570
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
deprecated же
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39649574
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
GroMoZeKazzz
Код: plsql
1.
2.
<block><number>0</number><SysID></SysID><errorcode>-1</errorcode><errortext>ТЕКСТ_ОШИБКИ</errortext> </block>
<block><number>1</number><SysID></SysID><errorcode>1</errorcode><errortext></errortext></block>

у тебя кривой xml - нет родительского блока. Обрами это все в какой-нибудь тег и воспользуйся xmlquery или xmltable:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
select 
  xmlcast(
     xmlquery('/root/block[1]/errortext' passing
        xmltype('<root>'||'&строка'||'</root>')
        returning content
     )
     as varchar2(100)
  )
  from dual;
-- или:
select *
from xmltable(
       '/root/block'
       passing
       xmltype('<root>
                &строка
                </root>'
              )
       columns 
         "number","errorcode","errortext"
       );

...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39649623
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousdeprecated жеextractvalue
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39649642
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-andrey_anonymousdeprecated жеextractvalue
и она тоже
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39649662
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousdeprecated жеТаки RTFM XMLTYPE.extract (FAQ)
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39649718
GroMoZeKazzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtender, вот что положили в поле - то и есть. Зачем класть часть xml'я - сам не пойму.
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39650061
GroMoZeKazzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic , прочитал, но так и не понял, как это применить к моему недоxml'ю.
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39650078
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GroMoZeKazzzкак это применить к моему недоxml'ю.До-xml-ь его, как сказали.
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39650922
GroMoZeKazzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic , попробовал
такselect *
from xmltable(
'/root/block'
passing
xmltype('<root>
select tcl.xmlout from scott.trancreationlog tcl where tcl.id = 423635115
</root>'
)
columns
"number","errorcode","errortext"
);
и
эдакselect
xmlcast(
xmlquery('/root/block[1]/errortext' passing
xmltype('<root>'||'select tcl.xmlout from scott.trancreationlog tcl where tcl.id = 423635115'||'</root>')
returning content
)
as varchar2(100)
)
from dual;

Ошибок нет, данных тоже.
Что-то делаю явно не так...
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39650941
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GroMoZeKazzzОшибок нетНе верю.GroMoZeKazzzЧто-то делаю явно не так...Научись пользоваться тэгами, и синтаксическая раскраска покажет, что.
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39650943
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select *
from 
 scott.trancreationlog tcl,
 xmltable(
       '/root/block'
       passing
       xmltype('<root>'||tcl.xmlout||'</root>'
              )
       columns 
         "number","errorcode","errortext"
       )
where tcl.id = 423635115;
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39650946
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select 
  xmlcast(
     xmlquery('/root/block[1]/errortext' 
         passing
             xmltype('<root>'||(select tcl.xmlout from scott.trancreationlog tcl where tcl.id = 423635115)||'</root>')
         returning content
     )
     as varchar2(100)
  )
from dual;
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39651201
GroMoZeKazzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtender , попробовал оба варианта - не взлетело. Пробовал на тестовой таблице .
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39651208
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GroMoZeKazzz,

вот прямо так и вставил?
Код: plsql
1.
insert into test values ('&lt;block&gt;&lt;number&gt;0&lt;/number&gt;&lt;SysID&gt;&lt;/SysID&gt;&lt;errorcode&gt;-1&lt;/errorcode&gt;&lt;errortext&gt;ТЕКСТ_ОШИБКИ&lt;/errortext&gt;&lt;/block&gt;&lt;block&gt;&lt;number&gt;1&lt;/number&gt;&lt;SysID&gt;&lt;/SysID&gt;&lt;errorcode&gt;1&lt;/errorcode&gt;&lt;errortext&gt;&lt;/errortext&gt;&lt;/block&gt;');



Выведи
Код: plsql
1.
2.
3.
4.
5.
set long 9999
set lines 400
set pages 0
select xmltype('<root>'||(select tcl.xmlout from scott.trancreationlog tcl where tcl.id = 423635115)||'</root>') x
from scott.trancreationlog tcl where tcl.id = 423635115;
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39651212
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

Тьфу, блин. Вот так.

Код: plsql
1.
2.
3.
4.
5.
set long 9999
set lines 400
set pages 0
select xmltype('<root>'||tcl.xmlout||'</root>') x
from scott.trancreationlog tcl where tcl.id = 423635115;
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39651229
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GroMoZeKazzz,

И помедитируй на
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select x.*
from test tcl,
 xmltable(
       '/root/block'
       passing
       xmltype('<root>'||replace(replace(tcl.xmlout,'&gt;','>'),'&lt;','<')||'</root>'
              )
       columns 
         "number","errorcode","errortext"
       ) x;


на своём примере
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39651240
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
GroMoZeKazzz,

Код: plsql
1.
&lt;block&gt;

и
GroMoZeKazzz<block>разные вещи
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39651290
GroMoZeKazzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env , на примере работает ок, а на базе нет :)
На базе заходит такой рейлейс
Код: sql
1.
replace(replace(tcl.xmlout,chr(38)||'gt;','>'),chr(38)||'lt;','<')

.
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39651315
GroMoZeKazzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Откуда одна лишняя пустая строка не пойму только...
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39652278
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GroMoZeKazzz env , на примере работает ок, а на базе нет :)
На базе заходит такой рейлейс
Код: sql
1.
replace(replace(tcl.xmlout,chr(38)||'gt;','>'),chr(38)||'lt;','<')

.

Зачем replace? У вас там только эти теги что-ли?

dbms_xmlgen.convert ( tcl.xmlout , dbms_xmlgen.ENTITY_DECODE )
уже отменили?
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39654996
GroMoZeKazzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
anvano, не взлетает.
Пробовал:
Код: plsql
1.
dbms_xmlgen.convert(cast(tcl.xmlout as varchar2(4000)),dbms_xmlgen.ENTITY_DECODE)


и просто
Код: plsql
1.
dbms_xmlgen.convert(tcl.xmlout,dbms_xmlgen.ENTITY_DECODE)


В обоих случаях ошибка: ORA-06553: PLS-221: 'ENTITY_DECODE' is not a procedure or is undefined.
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39655039
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GroMoZeKazzzВ обоих случаях ошибка: ORA-06553: PLS-221: 'ENTITY_DECODE' is not a procedure or is undefined.
В селекте? Тогда значение константы придется прописать явно, заглянув в спецификацию пакета.
...
Рейтинг: 0 / 0
Вытащить часть xml-стоки
    #39655056
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GroMoZeKazzz,

0/1
Код: 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.
SQL> select dbms_xmlgen.convert(
  2  '<?xml version="1.0"?>
  3  <ROWSET>
  4   <ROW>
  5    <DUMMY>X</DUMMY>
  6   </ROW>
  7  </ROWSET>
  8  ',0) s from dual
  9  /

S
--------------------------------------------------------------------------------
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;ROWSET&gt;
 &lt;ROW&gt;
  &lt;DUMMY&gt;X&lt;/DUMMY&gt;
 &lt;/ROW&gt;
&lt;/ROWSET&gt;



SQL> ed
Wrote file afiedt.buf

  1  select dbms_xmlgen.convert(
  2  '&lt;?xml version=&quot;1.0&quot;?&gt;
  3  &lt;ROWSET&gt;
  4   &lt;ROW&gt;
  5    &lt;DUMMY&gt;X&lt;/DUMMY&gt;
  6   &lt;/ROW&gt;
  7  &lt;/ROWSET&gt;
  8  ',1) s
  9* from dual
SQL> /

S
--------------------------------------------------------------------------------
<?xml version="1.0"?>
<ROWSET>
 <ROW>
  <DUMMY>X</DUMMY>
 </ROW>
</ROWSET>



....
stax
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вытащить часть xml-стоки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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