powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проблемка с пробельными элементами XML
3 сообщений из 3, страница 1 из 1
Проблемка с пробельными элементами XML
    #39440553
Jaba777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Получаю XML, элементы которого содержат только пробел(ы). При оборачивании CLOBа (содержимого xml) в XMLType и выводом через DBMS_OUTPUT вижу, что пробелы "сидят" на месте. Однако при intsertе в таблицу с полем типа XMLType и последующем select из таблицы пробелы куда-то исчезают, а элементы отображаются как одиночные без значения внутри. Есть ли какая-нибудь возможность поменять поведение, например, при создании поля с типом XMLType, либо какая-нибудь альтернатива?

Пример XML:
Код: xml
1.
<A><B> </B><C>    </C><D>123</D></A>


Пример работы с переменной и результат вывода:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
declare
  l_xml xmltype;
  l_clob clob := '<A><B> </B><C>    </C><D>123</D></A>';
begin
  l_xml := xmltype(l_clob);
  
  dbms_output.put_line('xml before ... [' || l_clob || ']'); 
  select xmlserialize(document l_xml as clob) into l_clob from dual;
  dbms_output.put_line('xml after ... [' || l_clob || ']');
end;
/

Код: plaintext
1.
2.
--Результат работы
xml before ... [<A><B> </B><C>    </C><D>123</D></A>]
xml after  ... [<A><B> </B><C>    </C><D>123</D></A>]

Пример работы с привлечением таблицы:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create table xml_test_tbl (xmlfragment xmltype);

declare
  l_xml xmltype;
  l_clob clob := '<A><B> </B><C>    </C><D>123</D></A>';
begin
  l_xml := xmltype(l_clob);
  
  dbms_output.put_line('xml before ... [' || l_clob || ']'); 
  insert into xml_test_tbl (xmlfragment) values (l_xml);
  select xmlfragment into l_xml from xml_test_tbl where rownum = 1;
  select xmlserialize(document l_xml as clob) into l_clob from dual;
  dbms_output.put_line('xml after ... [' || l_clob || ']');
end;
/

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
--Результат работы
xml before ... [<A> <B> </B><C>    </C> <D>123</D></A>]
xml after  ... [<A>
   <B/> 
   <C/> 
  <D>123</D>
</A>
]
...
Рейтинг: 0 / 0
Проблемка с пробельными элементами XML
    #39440564
Jaba777,

Пробел, табуляция, перевод строки и возврат каретки не являются значимыми символами xml и могут быть размножены для отступов или убраны повторения на усмотрение парсера/сериализатора.
...
Рейтинг: 0 / 0
Проблемка с пробельными элементами XML
    #39440919
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jaba777,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with t as
 (select xmlelement ("a",'    ') x
       , xmltype('<a xml:space="preserve">    </a>')  y
       , xmltype('<a>    </a>')  z
   from dual)
select x
     , length(extractvalue (x, 'a/text()'))
     , y
     , length(extractvalue (y, 'a/text()'))
     , z
     , length(extractvalue (z, 'a/text()'))
 from t ;



<a> </a> 4 <a xml:space="preserve"> </a> 4 <a/>
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проблемка с пробельными элементами XML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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