oracle plsql: как анализировать XML и вставлять в таблицу

Как загрузить вложенный файл xml в таблицу базы данных?

   Tom 
California Los angeles
Jim
California Los angeles

В этом xml имя – это имя таблицы, имя – это имя, Tom – его значение. Адрес является подтаблицей, а состояние и город – это две колонки внутри адреса. Я хочу вставить строку person в таблицу person, если она не удалась, не вставляйте в таблицу адресов. Этот xml может быть очень большим. Какое лучшее решение для этого?

Вы можете загрузить XML-документ в XMLType, а затем запросить его, например:

 DECLARE x XMLType := XMLType( '   Tom 
California Los angeles
Jim
California Los angeles
'); BEGIN FOR r IN ( SELECT ExtractValue(Value(p),'/row/name/text()') as name ,ExtractValue(Value(p),'/row/Address/State/text()') as state ,ExtractValue(Value(p),'/row/Address/City/text()') as city FROM TABLE(XMLSequence(Extract(x,'/person/row'))) p ) LOOP -- do whatever you want with r.name, r.state, r.city END LOOP; END;
 select * FROM XMLTABLE('/person/row' PASSING xmltype('   Tom 
California Los angeles
Jim
California Los angeles
') COLUMNS --describe columns and path to them: name varchar2(20) PATH './name', state varchar2(20) PATH './Address/State', city varchar2(20) PATH './Address/City' ) xmlt ;
 CREATE OR REPLACE PROCEDURE ADDEMP (xml IN CLOB) AS BEGIN INSERT INTO EMPLOYEE (EMPID,EMPNAME,EMPDETAIL,CREATEDBY,CREATED) SELECT ExtractValue(column_value,'/ROOT/EMPID') AS EMPID ,ExtractValue(column_value,'/ROOT/EMPNAME') AS EMPNAME ,ExtractValue(column_value,'/ROOT/EMPDETAIL') AS EMPDETAIL ,ExtractValue(column_value,'/ROOT/CREATEDBY') AS CREATEDBY ,ExtractValue(column_value,'/ROOT/CREATEDDATE') AS CREATEDDATE FROM TABLE(XMLSequence( XMLType(xml))) XMLDUMMAY; COMMIT; END; 

Вам нужно будет написать много кода для обработки сложных XML-файлов с помощью Oracle. Если у вас большие объемы XML, производительность также может быть проблемой. XML-парсеры classа предприятия позволят обрабатывать большие объемы сложных XML-файлов в реляционном формате без написания кода. Это сообщение в блоге показывает, как загружать сложные XML-файлы в Oracle без написания кода

  • Как использовать NSXMLParser для синтаксического анализа элементов parent-child с одинаковым именем
  • Как разобрать XML с помощью jsoup
  • Где я могу найти подробное сравнение фреймворков Java XML?
  • Требуется наличие пробелов между publicId и systemId
  • Лучший модуль узла для синтаксического анализа XML
  • Обновления просмотра списка Android
  • Какой XML-парсер следует использовать в C ++?
  • В чем разница между SAX и DOM?
  • Interesting Posts

    Как конвертировать Webex WRF в любой другой формат видео?

    Как установить имя процесса для Java-программы?

    WPF DataGrid – кнопка в столбце, получающая строку, из которой она появилась в обработчике событий Click

    Невозможно создать или отредактировать виртуальные устройства Android (AVD) от Eclipse, ADT 22.6

    Возврат из двойной загрузки в Windows

    Почему я могу получить ошибку GRUB после удаления раздела Linux?

    CALayer: добавить границу только с одной стороны

    Режим IE11 Document по умолчанию имеет значение IE7. Как сбросить?

    Что такое D-образный значок рядом с моим USB-C-портом?

    Установить размер на фоновое изображение с помощью CSS?

    Настройка настраиваемого шрифта

    Msgstr "Создать загрузочный диск msdos"

    Зачем мне удалять экземпляр System.Net.Mail.MailMessage?

    Является ли библиотека коллекций Scala 2.8 «самой длинной записью о самоубийстве в истории»?

    Почему DispatcherServlet создает другой контекст приложения?

    Давайте будем гением компьютера.