powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Обработка XML
12 сообщений из 12, страница 1 из 1
Обработка XML
    #38286985
VictorSergeev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем следующая ситуация. Есть процедура pl/sql
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare
p_stat number;
v_resp VARCHAR2(32000);
v_url varchar2(32000) := 'http://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
v_request  varchar2(32000) := 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
begin
v_status := apex.main.http_cgi_request(v_url, v_request, v_response);
return v_response;
end;


которая возвращает значения(item: display only) в виде xml:
Код: xml
1.
2.
3.
4.
5.
6.
7.
<?xml version="1.0"?>
<ROOT>
<ROW>
<TVIN>1</TVIN>
<VERS>M238.RR</VERS>
</ROW>
</ROOT>



Создаю HTML регион в нем пишу :item. В итоге получается: 1 M238.RR

Как можно извлечь эти параметры по очередно? Сначала 1 потом M238.RR.
...
Рейтинг: 0 / 0
Обработка XML
    #38287871
VictorSergeev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UP
...
Рейтинг: 0 / 0
Обработка XML
    #38287990
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Обработка XML
    #38289351
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VictorSergeev,

0. RTFM XMLTable :
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select *  
  from xmltable ( '//ROOT/ROW'
  passing xmltype('<?xml version="1.0"?>
<ROOT>
<ROW>
<TVIN>1</TVIN>
<VERS>M238.RR</VERS>
</ROW>
</ROOT>')
  columns
    tvin path 'TVIN',
    vers path 'VERS'
);



1. RTFM XMLType , Using XMLType Operations :
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
declare
  l_tvin number;
  l_vers varchar2(32);
  l_xml xmltype := 
xmltype('<?xml version="1.0"?>
<ROOT>
<ROW>
<TVIN>1</TVIN>
<VERS>M238.RR</VERS>
</ROW>
</ROOT>');

begin
  l_tvin := l_xml.extract('//ROOT/ROW/TVIN/text()').getNumberVal();
  l_vers := l_xml.extract('//ROOT/ROW/VERS/text()').getStringVal();
  dbms_output.put_line(l_tvin || ' - ' || l_vers);
end;
/
...
Рейтинг: 0 / 0
Обработка XML
    #38290635
VictorSergeev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
suPPLer,

У меня значения tvin и vers, могут быть разными(ни только 1 и M238.RR).
Поэтому не совсем понятно как получить их по отдельности. Хотя бы в разные айтемы.
...
Рейтинг: 0 / 0
Обработка XML
    #38290736
VictorSergeev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Более подробно. У меня есть процедура
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare
p_stat number;
v_resp VARCHAR2(32000);
v_url varchar2(32000) := 'http://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
v_request  varchar2(32000) := 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
begin
v_status := apex.main.http_cgi_request(v_url, v_request, v_response);
return v_response;
end;


Для нее я создаю(допустим P1_XML ) Item: Dusplay Only, св-ва:
1.Always, replacing any existing value in session state.
2.PL/SQL FUNCTION BODY

И записываю эту процедуру в Source value or expression.

Загружаю страницу и вижу:
Код: xml
1.
2.
3.
4.
5.
6.
7.
<?xml version="1.0"?>
<ROOT>
<ROW>
<TVIN>1</TVIN>
<VERS>M238.RR</VERS>
</ROW>
</ROOT>


Далее, создаю регион HTML, где в Source указываю:
Код: plsql
1.
:P1_XML



В итоге я вижу:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?xml version="1.0"?>
<ROOT>
<ROW>
<TVIN>1</TVIN>
<VERS>M238.RR</VERS>
</ROW>
</ROOT>

1 M238.RR


Как то вот так. А хочется выводить либо 1, либо M238.RR.
Если хочется убрать xml со странички, то в св-ах item'a вместо "Display Only" ставлю "Stop and Start HTML Layout Table".
...
Рейтинг: 0 / 0
Обработка XML
    #38290777
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VictorSergeev,

Вы выводите на странице Ваш XML дважды: вначале как поле Display Only, потом как Source региона. Первое выводится как есть, специальные символы вроде < и > экранируются, потому Вы видите теги и прочее. Второе выводится как HTML, в котором незнакомые теги не влияют на разметку, а текстовое содержимое элементов отображается.

Чтобы из результата HTTP-запроса извлечь значения элементов в поля, нужно работать с ним как с XML. Или разбирать как строку. Примеры работы с XML приведены выше с ссылками на документацию.
...
Рейтинг: 0 / 0
Обработка XML
    #38290844
VictorSergeev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
suPPLer,

Хорошо. Значит буду разбираться))) спасибо!
...
Рейтинг: 0 / 0
Обработка XML
    #38293813
VictorSergeev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
suPPLer,

Никак не могу понять принцип работы с XML. Если кому не сложно направьте в нужное русло. Как сформировать нужный запрос(процедуру)? Если кто может помочь буду премного благодарен! Спасибо.
...
Рейтинг: 0 / 0
Обработка XML
    #38329864
VictorSergeev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возник новый вопрос(дабы не создавать новую тему).
С предыдущей проблемой все получилось, путем обработки XML(в item'e) и записи его в коллекцию и последующего отображения как Classic report.

Сейчас имеется XML, который имеет вид:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?xml version="1.0"?>
<ROOT>
<ROW><TVIN>0</TVIN><VERS>19A645129000</VERS><STAT>Active</STAT></ROW>
<ROW><TVIN>1</TVIN><VERS>000000000000</VERS><STAT>Null</STAT></ROW>
<ROW><TVIN>2</TVIN><VERS>000000000000</VERS><STAT>Null</STAT></ROW>
<ROW><TVIN>3</TVIN><VERS>000000000000</VERS><STAT>Null</STAT></ROW>
<ROW><TVIN>4</TVIN><VERS>000000000000</VERS><STAT>Null</STAT></ROW>
<ROW><TVIN>5</TVIN><VERS>000000000000</VERS><STAT>Null</STAT></ROW>
<ROW><TVIN>..</TVIN><VERS>...................</VERS><STAT>.....</STAT></ROW>
</ROOT>




Как можно представить этот XML в виде отчета? Чтобы при чтение из коллекции каждая строка была отдельно.
Вот так:
Код: html
1.
2.
3.
4.
5.
6.
7.
1ст. 0 19A645129000 Active
2ст. 1 000000000000 Null
3ст. 2 000000000000 Null
4ст. 3 000000000000 Null
5ст. 4 000000000000 Null
6ст. 5 000000000000 Null
7ст. .. ................... ....
...
Рейтинг: 0 / 0
Обработка XML
    #38329872
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VictorSergeevКак можно представить этот XML в виде отчета?

Это та же самая задача, которая решена выше ( 14403384 ).

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select *  
  from xmltable ( '//ROOT/ROW'
  passing xmltype('<ROOT>
<ROW><TVIN>0</TVIN><VERS>19A645129000</VERS><STAT>Active</STAT></ROW>
<ROW><TVIN>1</TVIN><VERS>000000000000</VERS><STAT>Null</STAT></ROW>
<ROW><TVIN>2</TVIN><VERS>000000000000</VERS><STAT>Null</STAT></ROW>
<ROW><TVIN>3</TVIN><VERS>000000000000</VERS><STAT>Null</STAT></ROW>
<ROW><TVIN>4</TVIN><VERS>000000000000</VERS><STAT>Null</STAT></ROW>
<ROW><TVIN>5</TVIN><VERS>000000000000</VERS><STAT>Null</STAT></ROW>
<ROW><TVIN>..</TVIN><VERS>...................</VERS><STAT>.....</STAT></ROW>
</ROOT>')
  columns
    tvin path 'TVIN',
    vers path 'VERS',
    stat path 'STAT'
);
...
Рейтинг: 0 / 0
Обработка XML
    #38329888
VictorSergeev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
suPPLer,

выдает ошибку
need to specify the datatype for this column
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Обработка XML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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