Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / XMLTable / 2 сообщений из 2, страница 1 из 1
23.10.2020, 21:49
    #40011428
wolfio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable
Здравствуйте.
Не хотелось создавать тему, но ответа на свои вопросы найти не смог, пролистав доку на w3

Код: 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.
select * from xmltable('//*|//@*' passing  xmltype (' 
<Файл 
ИдФайл="7202024590** 7202010020201012000052" ТипИнф="СООБЩБАНКА" ВерсПрог="ЦФТ-БАНК 20.4" ТелОтпр="111111" ДолжнОтпр="" ФамОтпр="" КолДок="1" ВерсФорм="5.11">
  <Документ ИдДок="B21C5BB4-3304-A7B8-E053-D25CCB0A9196" КНД="1114315" КодНОБ="7709" НомСооб="999900002000000052" ТипСооб="700" ДолжнПрБ="" ФамПрБ="" ТелБанка="3452251872" ДатаСооб="12.10.2020">
    <СвБанк РегНом="9999" НомФ="0" БИК="666666666" НаимКО="ШАО ФАО;" ИННКО="7202024590" КППКО=" 72020100" ОГРНКО="">
      <АдрМНКО Индекс="625000" КодРегион="" Город="ТЮМЕНЬ" Улица="УЛ УРИЦКОГО 36"/>
    </СвБанк>
    <СвНП КодЛица="7">
      <НПФЛ 
		ДатаРожд="01.01.1997" 
		МестоРожд="г. Нск" 
		КодДУЛ="21" 
		СерНомДок="10 06 093821" 
		ДатаДок="">
        <ФИОФЛ Фамилия="Иванов" Имя="Яков" Отчество="Иваныч"/>
      </НПФЛ>
    </СвНП>
    <СвСчет НомСч="42301810100000000194" ДатаОткрСч="01.01.2008" ВидСч="по вкладам (депозитам)" ВалСч="0">
      <Открыт КодСостСч="1" НомерДог="123254" КодСостДог="0" ДатаЗаклДог="01.01.2008"/>
    </СвСчет>
  </Документ>
</Файл>
')
columns 
 node_name varchar2(100) path 'name()' --имя узла
 ,node_value varchar2(100) path 'text()' 
 ,count_ varchar2(100) path 'count(*)' --количество потомков
 ,count_attrs varchar2(100) path 'count(@*)' --количество аттрибутов
)



1. При добавлении в запрос корневого заголовка падает парсинг?
Код: plaintext
<?xml version="1.0" encoding="windows-1251"?>
Правильно ли я понимаю, что заголовок с версией и кодировкой становится рутом, не имеющим потомков? Если да, то как корректно обратиться к следующему за ним элементу как к руту?
Варианты //[1]*, //[0]* не работают почему-то. Вероятно написал что-то не верно.

2. Можно ли в колонку вывести тип узна (аттрибут/тэг/...)?
3. Как получить имя атрибута + его значение в разных колонках?
4. как получить значение тэга (если оно будет)?
5. Есть ли еще какие-то функции, возвращающие мета-информацию? (например, уровень вложенности ноды)


Задача состоит в том, чтобы в pl/sql обработать набор данных из разнородных XML, не прибегая к циклическим обходам, и всяким existNode функциям
...
Рейтинг: 0 / 0
26.10.2020, 13:45
    #40011866
wolfio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable
Хотел бы дополнить вопрос:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
select * from xmltable('//*|//@*' passing  xmltype (' 
<File fileName="rqw.xrn">
	<Document>
		<Clients>
			<Client id="12345" note="test">иванов иван иваныч</Client>
		</Clients>
		<Clients>
			<Client id="6789" note="smth">петров петро петрович</Client>
		</Clients>
	</Document>
</File>
')
columns 
 node_name varchar2(100) path 'name()' --имя узла
 ,node_value varchar2(100) path '.'  --значение текущего узла (атрибута или тега)
 ,count_ varchar2(100) path 'count(*)' --количество потомков
 ,count_attrs varchar2(100) path 'count(@*)' --количество аттрибутов
)



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


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