Use XQuery to split the XML document into chunks of interesting data. Represent those chunks with XMLTable to get something you can work with in SQL.
Here is a rough stab at a solution for your case (obviously it has to be rough, you haven't posted table structures, but I'm assuming SECTIONS has a foreign key to DEPARTMENTS). You should read the docs to find out more.
insert all
into departments
values (dept_id, dept_name)
into sections
values (dept_id, sect_id, sect_name)
select dept.id as dept_id
, dept_name as dept_name
, sect.id as sect_id
, sect.name as sect_name
from your_table
, xmltable('/ROWSET/DEPARTMENT'
passing your_table.xml_col
columns
"ID" varchar2(30) path 'DEPARTMENT_ID'
, "NAME" varchar2(30) path 'DEPARTMENT_NAME'
) dept
, xmltable('/ROWSET/SECTION'
passing your_table.xml_col
columns
"ID" varchar2(30) path 'SECTION_ID'
, "NAME" varchar2(30) path 'SECTION_NAME'
) sect
Incidentally, the repetition of DEPARTMENT sucks. XML is a pain in the neck to work with but at least it supports hierarchical data structures. If you're not going to use that to avoid duplication you might as well be using CSVs. Anyway, as the posted XML doesn't contain any actual duplication solving its failings is left as an exercise for the reader.