powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разбор XML на пути и значения
8 сообщений из 8, страница 1 из 1
Разбор XML на пути и значения
    #39633500
admontes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день.

Предположим есть XML (взято с потолка)
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<heads>
	<head>
		<fio>Иванов Иван Иванович</fio>
		<innfl>650102111111</innfl>
		<position>Ликвидатор</position>
		<date>2017-09-19</date>
		<firstDate>2009-06-29</firstDate>
	</head>

	<head>
		<fio>Санжаревский Сергей Игоревич</fio>
		<innfl>650102442906</innfl>
		<position>Зам.Ликвидатора</position>
		<date>2017-09-19</date>
		<firstDate>2009-06-29</firstDate>
		<phones>
			<phone>111111</phone>
			<phone>222222</phone>
		</phones>
	</head>
</heads>



Есть ли возможность привести в реляционную модель из двух колонок: путь, значение.
Ну, например, из примера выше будет что-то:
/heads/head/fio;Иванов Иван Иванович
/heads/head/innfl;650102111111
.........
/heads/head/phones/phone;111111
/heads/head/phones/phone;222222

Причем структура xml заранее неизвестно. Нужно рекурсивно найти все дочерние элементы и вывести их значения с наименованием пути.
Подскажите, можно ли это сделать с помощью Xquery ?
...
Рейтинг: 0 / 0
Разбор XML на пути и значения
    #39633525
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
admontesПодскажите, можно ли это сделать с помощью Xquery ?

а чем dbms_xmldom не угодил ?
...
Рейтинг: 0 / 0
Разбор XML на пути и значения
    #39633528
admontes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
123йй,
Не все данные нужны и хотелось бы их предварительно отфильтровать.
...
Рейтинг: 0 / 0
Разбор XML на пути и значения
    #39633533
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
admontes,

как ты отфильтруешь то, что еще не распарсено и

авторПричем структура xml заранее неизвестно.?
...
Рейтинг: 0 / 0
Разбор XML на пути и значения
    #39633536
admontes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
123йй,
Мне нужны только определенные ветки изменений, которые возвращает xmldiff
...
Рейтинг: 0 / 0
Разбор XML на пути и значения
    #39633539
admontes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно конечно так:
Код: 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.
select * from 
xmltable( '//*[text()]'
          passing 
          xmltype('
                <heads>
                  <head>
                    <fio>Иванов Иван Иванович</fio>
                    <innfl>650102111111</innfl>
                    <position>Ликвидатор</position>
                    <date>2017-09-19</date>
                    <firstDate>2009-06-29</firstDate>
                  </head>

                  <head>
                    <fio>Санжаревский Сергей Игоревич</fio>
                    <innfl>650102442906</innfl>
                    <position>Зам.Ликвидатора</position>
                    <date>2017-09-19</date>
                    <firstDate>2009-06-29</firstDate>
                    <phones>
                      <phone>111111</phone>
                      <phone>222222</phone>
                    </phones>
                  </head>
                </heads>           
          ')  
           
           COLUMNS
                         p  varchar2(200) path 'local-name()',
                         v  varchar2(200) path 'text()'
--                         ,v  varchar2(200) path 'v');
)


Но нет полных путей
...
Рейтинг: 0 / 0
Разбор XML на пути и значения
    #39633548
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select *
from xmltable('//*[empty(./*)]' -- не выведет значения с xml на том же уровне
passing хмл
  columns "." varchar2(100),
  p varchar2(1000) path 'declare function local:path($x) {
   for $p in $x/..
   let $pn := local:path($p)
   return concat($pn,"/",name($x))
};local:path(.)'
);
...
Рейтинг: 0 / 0
Разбор XML на пути и значения
    #39633552
admontes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-,

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


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