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 без написания кода

  • Почему такая плохая идея анализировать XML с помощью регулярного выражения?
  • Как конвертировать ISO8601 TimeSpan в C # TimeSpan?
  • Лучший модуль узла для синтаксического анализа XML
  • Где я могу найти подробное сравнение фреймворков Java XML?
  • Разрешены ли разрывы строк в значениях атрибутов XML?
  • Требуется наличие пробелов между publicId и systemId
  • xml.LoadData. Данные на корневом уровне недопустимы. Строка 1, позиция 1
  • Как преобразовать XML в JSON с помощью C # / LINQ?
  • Давайте будем гением компьютера.