Next, all data from your XML will be extracted:
DECLARE @doc VARCHAR(1000) = '<?xml version="1.0" encoding="utf-8"?>
<DynamicEntity Name="ProductsMilk">
<Field Name="Name" Type="nvarchar(256)" AllowNulls="false" />
<Field Name="Description" Type="ntext" AllowNulls="false" />
<Field Name="Price" Type="float" AllowNulls="false" />
</DynamicEntity>';
DECLARE @iDoc INT;
EXECUTE sp_xml_preparedocument @idoc OUTPUT, @doc;
SELECT *
FROM OPENXML(@iDoc, 'DynamicEntity/Field')
WITH
( DynamicEntityName VARCHAR(100) '../@Name',
FieldName VARCHAR(100) '@Name',
[Type] VARCHAR(100) '@Type',
AllowNulls VARCHAR(100) '@AllowNulls'
);
Basically, you just need to specify a column mapping for your xml attributes.
source
share