Based on your XML, you can use this XQuery SELECTto extract your elements from XML:
select
@input.value('(/ArrayOfInfringementEntity/InfringementEntity/infringementNumber)[1]', 'VARCHAR(10)') 'InfringementNumber',
@input.value('(/ArrayOfInfringementEntity/InfringementEntity/issueAgency)[1]', 'VARCHAR(5)') 'Issue Agency',
@input.value('(/ArrayOfInfringementEntity/InfringementEntity/infringementType)[1]', 'VARCHAR(5)') 'Infringement Type',
@input.value('(/ArrayOfInfringementEntity/InfringementEntity/offenceEntity/offenceCode)[1]', 'INT') 'Offence Code',
@input.value('(/ArrayOfInfringementEntity/InfringementEntity/vehicleEntity/vehicleClass)[1]', 'INT') 'Vehicle Class',
@input.value('(/ArrayOfInfringementEntity/InfringementEntity/obligationNumber)[1]', 'VARCHAR(11)') 'Obligation Number'
Replace with a @inputvariable or column that contains your XML (I used @input as a test layer in my tests).
:
InfringementNumber Issue Agency Infringement Type Offence Code Vehicle Class Obligation Number
1234567891 017 1A 7777 2 obligation1
, , INSERT INTO .... SELECT .
:, XML (/InfringementEntity /ArrayOfInfringementEntity), SELECT :
SELECT
InfrEntity.value('(infringementNumber)[1]', 'VARCHAR(10)') 'InfringementNumber',
InfrEntity.value('(issueAgency)[1]', 'VARCHAR(5)') 'Issue Agency',
InfrEntity.value('(infringementType)[1]', 'VARCHAR(5)') 'Infringement Type',
InfrEntity.value('(offenceEntity/offenceCode)[1]', 'INT') 'Offence Code',
InfrEntity.value('(vehicleEntity/vehicleClass)[1]', 'INT') 'Vehicle Class',
InfrEntity.value('(obligationNumber)[1]', 'VARCHAR(11)') 'Obligation Number'
from
(yourXMLcolumn).nodes('/ArrayOfInfringementEntity/InfringementEntity') as ArrInfr(InfrEntity)