Er zijn verschillende gebreken:
-
FROM OPENXML is verouderd en mag niet meer worden gebruikt (er zijn zeldzame uitzonderingen)
-
uw XML bevatte een standaard naamruimte, die moet worden gedeclareerd
-
uw XPath is verkeerd:
/Return/ReturnData/IRS990ScheduleHIRS990ScheduleH/
moet zijn/Return/ReturnData/IRS990ScheduleH/
Maar hoe dan ook, je moet je wenden tot moderne XQuery
methoden. Probeer het als volgt:
--Dit zal de XML inlezen in een gedeclareerde variabele.
--aandacht Uw XML wordt gedeclareerd met utf-8
, dit kan leiden tot problemen met speciale tekens...
DECLARE @x xml
SELECT @x = R
FROM OPENROWSET (BULK 'C:\Users\USER\990\Example.xml', SINGLE_BLOB) AS ReturnData(R);
--Dit is de query, declareer eerst de naamruimte(n), gebruik dan .nodes()
en .value()
:
WITH XMLNAMESPACES(DEFAULT 'http://www.irs.gov/efile'
,'http://www.w3.org/2001/XMLSchema-instance' AS xsi)
SELECT ct.value('(FinancialAssistancePolicyInd)[1]','int') AS FinancialAssistancePolicyInd
,ct.value('(FPGReferenceDiscountedCareInd)[1]','int') AS FPGReferenceDiscountedCareInd
,ct.value('(FinancialAssistanceAtCostTyp/PersonsServedCnt)[1]','int') AS PersonsServedCnt
,ct.value('(FinancialAssistanceAtCostTyp/NetCommunityBenefitExpnsAmt)[1]','int') AS NetCommunityBenefitExpnsAmt
FROM @x.nodes('/Return/ReturnData/IRS990ScheduleH') AS A(ct)