powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разбор XML
14 сообщений из 14, страница 1 из 1
Разбор XML
    #39901155
Vlad001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Подскажите пожалуйста по задаче - есть несколько XML, отличие у них в namespace
1.
Код: xml
1.
2.
3.
4.
<?xml version="1.0" encoding="windows-1251"?>
<ABC xmlns="urn:qwe:rty:ABC:version1">
<ITEM rowNumber='1'>
...



2.
Код: xml
1.
2.
3.
4.
<?xml version="1.0" encoding="windows-1251"?>
<DEF xmlns="urn:qwe:rty:DEF:version1">
<ITEM rowNumber='1'>
...




Для запроса использую XMLTABLE c xmlnamespaces

Код: plsql
1.
2.
3.
4.
5.
select 
...
FROM xmlData x,
             XMLTABLE(xmlnamespaces(default 'urn:qwe:rty:ABC:version1'),  '*/ITEM' 
                      PASSING x.myxml  COLUMNS ...



Очень хочется иметь один запрос для обоих XML
При попытке использовать конструкцию
Код: plsql
1.
 XMLTABLE(xmlnamespaces(default 'urn:qwe:rty:'||myvar||':version1')



получаю ORA-02000 missing ) keyword

Каким выражением можно заменить строку в описании xmlnamespaces?
Что-нибудь типа
Код: plsql
1.
xmlnamespaces(default 'urn:qwe:rty:*:version1')



Спасибо!
...
Рейтинг: 0 / 0
Разбор XML
    #39901171
Vlad001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пример с разными xmlnamespaces,
хочется выбирать из обоих наборов xmlData1 и xmlData2 при помощи одного запроса чем-то заменив xmlnamespaces(DEFAULT 'urn:qwe:rty: ABC :version1')

Код: 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.
with xmlData1 as
 (select XMLTYPE('<?xml version="1.0" encoding="Windows-1251" ?>
<First xmlns="urn:qwe:rty:ABC:version1">
  <Second>
    <Third>
      <Фамилия>Иванов</Фамилия>
      <Имя>Иван</Имя>
    </Third>
  </Second>
</First>') myxml
    from dual),

xmlData2 as
 (select XMLTYPE('<?xml version="1.0" encoding="Windows-1251" ?>
<First xmlns="urn:qwe:rty:DEF:version1">
  <Second>
    <Third>
      <Фамилия>Петров</Фамилия>
      <Имя>Петр</Имя>
    </Third>
  </Second>
</First>') myxml
    from dual)

SELECT t.last_name, t.name
  FROM xmlData1 x,
       xmltable(xmlnamespaces(DEFAULT 'urn:qwe:rty:ABC:version1'),
                '/First/Second/Third' PASSING x.myxml 
                COLUMNS 
                 last_name  VARCHAR2(255) path 'Фамилия',
                      NAME  VARCHAR2(255) path 'Имя') t
...
Рейтинг: 0 / 0
Разбор XML
    #39901172
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad001,

а игнорировать namespace можно ?
...
Рейтинг: 0 / 0
Разбор XML
    #39901174
Vlad001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
123йй,

Можно, но как это сделать? Если его не указывать, вообще ничего не возвращается

XML поменять возможности нет
...
Рейтинг: 0 / 0
Разбор XML
    #39901178
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad001,
Код: plsql
1.
2.
3.
xmltable(--xmlnamespaces(DEFAULT 'urn:qwe:rty:ABC:version1'),
                '/*:First/*:Second/*:Third' PASSING x.myxml COLUMNS 
                 last_name  VARCHAR2(255) path '*:Фамилия
...
Рейтинг: 0 / 0
Разбор XML
    #39901182
Zloxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vlad001,

Vlad001получаю ORA-02000 missing ) keyword

Увы "string" это не "expr"

Vlad001Очень хочется
Динамика?
deprecated XMLSequence+Extract?
XMLTransform?
Может как-то через XQuery_string можно будет отжаться?

Если что-то придумаете, расскажите плиз, тоже интересно.
...
Рейтинг: 0 / 0
Разбор XML
    #39901262
yvprod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
del
...
Рейтинг: 0 / 0
Разбор XML
    #39901264
Vlad001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
123йй,
спасибо большое, так получилось!
...
Рейтинг: 0 / 0
Разбор XML
    #39901267
Vlad001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yvprod,

тут все-таки интерес был одним запросом получить результат, т.к. это процедура будет в которую XML приходит
...
Рейтинг: 0 / 0
Разбор XML
    #39901269
yvprod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vlad001,

поторопился, удалил

namespace можно целиком через переменную подставить, с конкатенацией будут проблемы
...
Рейтинг: 0 / 0
Разбор XML
    #39901283
Vlad001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yvprod
Vlad001,

поторопился, удалил

namespace можно целиком через переменную подставить, с конкатенацией будут проблемы


А как через переменную, покажите пожалуйста?
...
Рейтинг: 0 / 0
Разбор XML
    #39901319
yvprod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vlad001,

Код: plsql
1.
2.
3.
4.
5.
  namespace varchar2(40) := 'xmlns="urn:qwe:rty:ABC:version1"';
begin
  -- Test statements here
  dbms_output.put_line(xml.extract('/First/Second/Third/Имя/text()', namespace).getStringVal());
end;
...
Рейтинг: 0 / 0
Разбор XML
    #39901340
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yvprod
Vlad001,

поторопился, удалил

namespace можно целиком через переменную подставить, с конкатенацией будут проблемы


Код: 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.
with t as (
            select  xmltype('<ENVELOPE xmlns="urn:qwe:rty:ABC:version1"><ITEM rowNumber="1">1</ITEM></ENVELOPE>') x,
                    'ABC' default_namespace
               from dual
           union all
            select  xmltype('<ENVELOPE xmlns="urn:qwe:rty:DEF:version1"><ITEM rowNumber="1">2</ITEM></ENVELOPE>') x,
                    'DEF' default_namespace
               from dual
          )
select  item,
        default_namespace
  from  t,
        xmltable(
                 concat(concat('declare default element namespace "urn:qwe:rty:',default_namespace),':version1"; (: :)
                 $x/ENVELOPE/ITEM')
                 passing x as "x"
                 columns
                   item number path '.'
                )
/

      ITEM DEF
---------- ---
         1 ABC
         2 DEF

SQL> 



SY.
...
Рейтинг: 0 / 0
Разбор XML
    #39901357
yvprod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

про такое не знал, спасибо, надо получше разобраться
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разбор XML
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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