Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разбор XML / 19 сообщений из 19, страница 1 из 1
17.09.2019, 09:57
    #39862595
Artes46
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML
Всем здравствуйте!
У меня такой вопрос.
Есть XML, который надо разобрать, однако не получается сделать это верно.
Код ниже возвращает следующее:
11;IvanovPetrov
12;SidorovSmirnov
однако мне надо, чтобы было следующее:
11;Ivanov
11;Petrov
12;Sidorov
12;Smirnov
Есть ещё extractvalue, но он выдаёт ошибку.
Помогите пожалуйста!
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
declare
    v_res varchar2(38);
  begin
  for i in(select t.extract('//school/@id').getStringVal() as q,
    extract(value(t),'//school/student/@Fam_st').getStringVal() as q1
from table(XMLSequence(XMLType(
'<SUZ>
<school id="11" name="№11">
<student id_st="1" Fam_st="Ivanov"/>
<student id_st="2" Fam_st="Petrov"/>
</school>
<school id="12" name="№12">
<student id_st="1" Fam_st="Sidorov"/>
<student id_st="2" Fam_st="Smirnov"/>
</school>
</SUZ>').extract('//school'))) t
) loop
dbms_output.put_line(i.q||';'||i.q1);
end loop;
end;
...
Рейтинг: 0 / 0
17.09.2019, 10:02
    #39862601
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML
Код: 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.
select *
from xmltable(
'/SUZ/school/student'
passing xmltype(
'<SUZ>
<school id="11" name="№11">
<student id_st="1" Fam_st="Ivanov"/>
<student id_st="2" Fam_st="Petrov"/>
</school>
<school id="12" name="№12">
<student id_st="1" Fam_st="Sidorov"/>
<student id_st="2" Fam_st="Smirnov"/>
</school>
</SUZ>')
columns
school_id number        path './../@id',
fam       varchar2(100) path '@Fam_st'
);

 SCHOOL_ID FAM
---------- --------------------
        11 Ivanov
        11 Petrov
        12 Sidorov
        12 Smirnov
...
Рейтинг: 0 / 0
17.09.2019, 10:54
    #39862645
Artes46
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML
AmKad,
Я прошу прощения, что задаю много вопросов, но у меня на выходе получается следующее
Код: plsql
1.
2.
3.
4.
5.
6.
 SCHOOL_ID FAM
---------- --------------------
           Ivanov
           Petrov
           Sidorov
           Smirnov


т.е. не выводится id школы. Попробовал поиграться с путём до id школы, но не выходит.
...
Рейтинг: 0 / 0
17.09.2019, 11:10
    #39862663
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML
Версия Oracle какая?
...
Рейтинг: 0 / 0
17.09.2019, 11:12
    #39862666
Artes46
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML
AmKad,
11g
...
Рейтинг: 0 / 0
17.09.2019, 11:19
    #39862676
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML
Artes4611gНе хватает, как минимум, ещё трёх цифр.
...
Рейтинг: 0 / 0
17.09.2019, 11:22
    #39862681
Artes46
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML
Elic,
Пардон. 11.2.0
...
Рейтинг: 0 / 0
17.09.2019, 11:36
    #39862698
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML
Artes46Пардон. 11.2.0С последовательным счётом проблемы?
...
Рейтинг: 0 / 0
17.09.2019, 11:40
    #39862705
Artes46
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML
Elic,
Да
...
Рейтинг: 0 / 0
17.09.2019, 11:43
    #39862706
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML
Artes46ElicС последовательным счётом проблемы?ДаНе рано ли тогда на XML замахнулся?
...
Рейтинг: 0 / 0
17.09.2019, 11:47
    #39862711
Artes46
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML
Elic, А не много ли ты вопросов задаёшь? Я всего лишь хочу решить задачу, которую не могу решить.
...
Рейтинг: 0 / 0
17.09.2019, 11:56
    #39862720
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML
Artes46Elic, А не много ли ты вопросов задаёшь? Я всего лишь хочу решить задачу, которую не могу решить.Просто Elic спрашивает тебя, а какая версия оракл у тебя ?
11.2.0.1
11.2.0.3
11.2.0.4
???
результат выполнения скрипта:
Код: plsql
1.
select * from v$version;
...
Рейтинг: 0 / 0
17.09.2019, 11:58
    #39862725
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML
Artes46Я всего лишь хочу решить задачу, которую не могу решить.Ну так и почему же ты тогда не хочешь сообщить нам версию?
...
Рейтинг: 0 / 0
17.09.2019, 12:14
    #39862743
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML
Владимир САArtes46Elic, А не много ли ты вопросов задаёшь? Я всего лишь хочу решить задачу, которую не могу решить.Просто Elic спрашивает тебя, а какая версия оракл у тебя ?
11.2.0.1
11.2.0.3
11.2.0.4
???
результат выполнения скрипта:
Код: plsql
1.
select * from v$version;

Кстати проверил за Artes46
скрипт, предложенный выше (AmKad):
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
select *
from xmltable(
'/SUZ/school/student'
passing xmltype(
'<SUZ>
<school id="11" name="№11">
<student id_st="1" Fam_st="Ivanov"/>
<student id_st="2" Fam_st="Petrov"/>
</school>
<school id="12" name="№12">
<student id_st="1" Fam_st="Sidorov"/>
<student id_st="2" Fam_st="Smirnov"/>
</school>
</SUZ>')
columns
school_id number        path './../@id',
fam       varchar2(100) path '@Fam_st'
);


Не выводит инфу по 1 столбцу для 11.2.0.1, 11.2.0.3
А вот для 11.2.0.4 отрабатывает полностью.
...
Рейтинг: 0 / 0
17.09.2019, 12:33
    #39862764
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML
Владимир СА,

А так?
Код: 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.
select t.*
from xmltable(
'for $i in /SUZ/school/student
    return <x sch_id="{$i/../@id}" st="{$i/@Fam_st}"/>'
passing xmltype(
'<SUZ>
<school id="11" name="№11">
<student id_st="1" Fam_st="Ivanov"/>
<student id_st="2" Fam_st="Petrov"/>
</school>
<school id="12" name="№12">
<student id_st="1" Fam_st="Sidorov"/>
<student id_st="2" Fam_st="Smirnov"/>
</school>
</SUZ>')
columns
school_id number        path '/x/@sch_id',
fam       varchar2(100) path '/x/@st'
) t;

 SCHOOL_ID FAM
---------- ----------------------
        11 Ivanov
        11 Petrov
        12 Sidorov
        12 Smirnov
...
Рейтинг: 0 / 0
17.09.2019, 12:36
    #39862766
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML
AmKadА так?работает...
...
Рейтинг: 0 / 0
17.09.2019, 13:10
    #39862812
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML
Вот так еще попробуйте
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
with x(doc) as (select xmltype(
  '<SUZ>
  <school id="11" name="№11">
    <student id_st="1" Fam_st="Ivanov"/>
    <student id_st="2" Fam_st="Petrov"/>
  </school>
  <school id="12" name="№12">
    <student id_st="1" Fam_st="Sidorov"/>
    <student id_st="2" Fam_st="Smirnov"/>
  </school>
  </SUZ>') from dual
)
select school_id, fam
from x
   , xmltable( '/SUZ/school' passing doc
       columns school_id number  path '@id'
             , student   xmltype path 'student'
             ) xx
   , xmltable( '/student' passing student
       columns fam varchar2(100) path '@Fam_st'
             )
...
Рейтинг: 0 / 0
17.09.2019, 19:38
    #39863055
Artes46
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML
AmKad, Все работает! Спасибо огромное. С версией с утра затупил...(
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
...
Рейтинг: 0 / 0
18.09.2019, 07:31
    #39863134
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML
Artes4611.2.0.2.0Раз уж Oracle не ворованный, пропатчись до 11.2.0.4, чтобы не пользоваться AmKad-овскими костылями.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разбор XML / 19 сообщений из 19, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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