И ещё Oracle + XML | |
---|---|
S-type Сообщений: 2969 Дата регистрации: 24.04.2004 |
Есть XML:
Мне нужно значение КодОбр. Извлекаю его: l_xresponse.extract('//response/data/Документ/КодОбр/text()').getStringVal(); Дошёл в цикле до документа, в котором:
Как можно вытащить КодОбр? И ещё вопрос. Приходится extract оборачивать в begin + exception, что неудобно. Можно извлекать так, что бы возвращалось пусто, без перехвата исключения? |
Re: И ещё Oracle + XML | |
---|---|
S-type Сообщений: 2969 Дата регистрации: 24.04.2004 |
Вытащить КодОбр можно так:
|
Re: И ещё Oracle + XML | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Что-то типа
Писать полный путь по иерархии не обязательно - разве что у тебя там на разных уровнях в разных ветках этот "Документ" живёт, и нужна именно ветка по указанному пути. Если не хочешь обрабатывать ошибки, то проверяй то что шаг .extract() вернул не NULL (хоть что-то нашёл) прежде чем у возвращённого объекта метод getStringVal() дёргать. ------------------ WBR, Igor |
Re: И ещё Oracle + XML | |
---|---|
S-type Сообщений: 2969 Дата регистрации: 24.04.2004 |
Спасибо.
|
Re: И ещё Oracle + XML | |
---|---|
ВладимирС Автор Сообщений: 1693 Дата регистрации: 03.11.2005 |
Что-то у меня не получается парсить XML. Может великие гуру помогут.
И так, имею XML, понятно взял попроще: Хочу получить результат в виде таблицы: claim_CODE | applications_CODE | constructions_CODE ................................................... 413 877 1666 413 877 1668 413 877 1667 413 878 1688 413 879 1690 413 879 1689 413 880 1691 413 881 1692 413 882 1694 413 882 1693 413 883 1695
запрос типа:
Получаю результат:
claim_CODE | applications_CODE .............................. 413 877 413 878 413 879 413 880 413 881 413 882 413 883 А как написать запрос на желаемый результат ? |
Re: И ещё Oracle + XML | |
---|---|
ВладимирС Автор Сообщений: 1693 Дата регистрации: 03.11.2005 |
Можно теги получить:
Результат: claim_CODE | applications_CODE | constructions_CODE ................................................... 413 877 <code>1666</code><code>1668</code><code>1667</code> 413 878 <code>1688</code> 413 879 <code>1690</code><code>1689</code> 413 880 <code>1691</code> 413 881 <code>1692</code> 413 882 <code>1694</code><code>1693</code> 413 883 <code>1695</code>С дальнейшим парсить "constructions_CODE"... Но XML на самом деле намного сложнее и такой подход конечно возможен, но как то непривлекателен. |
Re: И ещё Oracle + XML | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
По идее следует переходить на использование XMLTable, нечто типа вот такого
Есть ещё процедурный подход - используя пакет DBMS_XMLDOM, может оказаться более эффективным (а если "структура" XML-ей нестабильна/разнообразна/произвольна, то ещё и проще, т.к. не потребует "динамики" в SQL запросах использующих XML* функции). P.S. Если XML документы предполагаются гигантские - по десяткам/сотням Мб - то стоит писать процедурный код разбора используя SAX парсер - но это уже чисто на Java (Java классы можно "встроить" в СУБД). ------------------ WBR, Igor |
Re: И ещё Oracle + XML | |
---|---|
ВладимирС Автор Сообщений: 1693 Дата регистрации: 03.11.2005 |
Igor Korolyov !
Супер, БОЛЬШОЕ ТЕБЕ СПАСИБО ! Как сам не догадался. Блин... Второй запрос проанализирую... |
Re: И ещё Oracle + XML | |
---|---|
keisov Сообщений: 3 Дата регистрации: 25.01.2018 |
ВладимирС
Поздравляю) |
Re: И ещё Oracle + XML | |
---|---|
ВладимирС Автор Сообщений: 1693 Дата регистрации: 03.11.2005 |
Не выходит что-то каменный цветок.
Чего-то недопонимаю. Опять прошу помощи. И так, будут присылаться XML файлы, которые нужно будет парсить, вытаскивать значения и загружать в таблицу. Но, что-то попробовал на тестовой XML вытаскивать данные и не получается... XMLTYPE принимает нормально. Но только начинаем идти по тегам, результаты запроса выдаются пустыми.
Чувствую дело в Namespaces строки:
Как получить значения тегов всех <nsiOKPD> типа ?:
Исправлено 1 раз(а). Последнее : ВладимирС, 25.09.18 11:54 |
Re: И ещё Oracle + XML | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
|
Re: И ещё Oracle + XML | |
---|---|
ВладимирС Автор Сообщений: 1693 Дата регистрации: 03.11.2005 |
Igor Korolyov !
Большое спасибо! Оставлю на память:
[attachment 30084 R.png] Исправлено 1 раз(а). Последнее : ВладимирС, 27.09.18 07:04 |
© 2000-2024 Fox Club  |