いくつかの欠陥があります:
-
FROM OPENXMLは古くなっているため、これ以上使用しないでください(まれな例外が存在します)
-
XMLにはデフォルトの名前空間が含まれており、これを宣言する必要があります
-
XPathが間違っています:
/Return/ReturnData/IRS990ScheduleHIRS990ScheduleH/
/Return/ReturnData/IRS990ScheduleH/
である必要があります
しかし、とにかくあなたは現代のXQuery
に目を向けるべきです メソッド。次のように試してください:
-これにより、XMLが宣言された変数に読み込まれます。
-注意 XMLはutf-8
で宣言されています 、これは特殊文字の問題につながる可能性があります...
DECLARE @x xml
SELECT @x = R
FROM OPENROWSET (BULK 'C:\Users\USER\990\Example.xml', SINGLE_BLOB) AS ReturnData(R);
-これはクエリです。.nodes()
を使用するよりも、最初に名前空間を宣言します。 および.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)