2017-09-18 14 views
0

私のクエリが機能しない理由を教えてください。 以下は私のXMLです。 これをSQL Serverで解析しようとしています。Openxmlを使用してSQLサーバーでxmlを解析する

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
<soap:Body> 
<PostEDIDataToEIP xmlns="http://tempuri.org/"> 
<xmlRequestDetails> 
<Applicant> 
<ApplyData> 
<RefNo>86</RefNo> 
<ProfileSnapshot> 
<Name>King</Name> 
<ResumeHeadline>RESUME HEADLINE.......................</ResumeHeadline> 
</ProfileSnapshot> 
</ApplyData> 
</Applicant> 
</xmlRequestDetails> 
</PostEDIDataToEIP> 
</soap:Body> 
</soap:Envelope> 

set @xmlRequestDetails='Above xml' 
set @xPath='/soap:Envelope/soap:Body/PostEDIDataToEIP/xmlRequestDetails/Applicant/ApplyData' 
Exec sp_xml_preparedocument @XML_Hndl OUTPUT, @xmlRequestDetails 
select * into #jobdetails FROM OPENXML(@XML_Hndl,@xPath,2) with (RefNo smallint) 
select * from #jobdetails 

set @xPath='/soap:Envelope/soap:Body/PostEDIDataToEIP/xmlRequestDetails/Applicant/ApplyData/ProfileSnapshot' 
select * into #personaldetails FROM OPENXML(@XML_Hndl,@xPath,2) with (Name varchar(100), ResumeHeadline varchar(100)) 
select * from #personaldetails 

以下のエラーが発生します。

Msg 6603, Level 16, State 2, Procedure sp_forintegration, Line 31 
XML parsing error: Reference to undeclared namespace prefix: 'soap'. 
The statement has been terminated. 
Msg 208, Level 16, State 0, Procedure sp_forintegration, Line 33 
Invalid object name '#jobdetails'. 

このXMLは、SQL ServerのテーブルXML列に挿入されています。 解析中に何か間違いをしているように感じました。何ができるか、解析する方法を教えてください。

おかげで/よろしく、 Prasanthクマール

答えて

0

あなたはXMLドキュメントを準備するとき、次のように沿って何かを名前空間接頭辞を宣言する必要があります:

SET @rootxmlns = '<root xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"/>' 
Exec sp_xml_preparedocument @XML_Hndl OUTPUT, @xmlRequestDetails, @rootxmlns 

は、より詳細な例についてはhereを参照してください。

関連する問題