I need to get data from an XML:
DECLARE @input XML=
'<Data xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Data xmlns="http://test.com/xmlschema/Data_Schema.xsd">
<Person defID="414123">
<GlobalID Type="People" Code="112233" />
<FirstName>John</FirstName>
<LastName>Smith</LastName>
<Email>[email protected]</Email>
<Department>Sales</Department>
<CountryCode>US</CountryCode>
<CompanyName>Test Company</CompanyName>
</Person>
</Data>
</Data>';
I can't do anything about the XML structure, this is what I've tried already:
WITH XMLNAMESPACES('http://test.com/xmlschema/Data_Schema.xsd' AS x1)
SELECT [Email] = PersonLevel.value('(Email)[1]', 'nvarchar(64)'),
[FirstName] = PersonLevel.value('(FirstName)[1]', 'nvarchar(64)'),
[LastName] = PersonLevel.value('(LastName)[1]', 'nvarchar(64)'),
[Department] = PersonLevel.value('(Department)[1]', 'nvarchar(64)'),
[CountryCode] = PersonLevel.value('(CountryCode)[1]', 'nvarchar(64)'),
[CompanyName] = PersonLevel.value('(CompanyName)[1]', 'nvarchar(64)')
FROM @Input.nodes('/Data/x1:Data/x1:Person') AS XT1(PersonLevel);
My query results as NULL values, what am I doing wrong?