2010-03-01 3 views
3

다른 곳에서 답을 얻는다면 사과드립니다. 나는 오류 메시지 XQuery를 점점 계속 [Mytable.XMLData.nodes는()] : '대답'SQL Server XQUERY를 가져 오는 방법 "[요소]라는 요소가 없습니다."

SELECT 
ref.value('/','nvarchar(1000)') 
FROM Mytable CROSS APPLY xmldata.nodes('Answer') R(ref) 

라는 이름의 요소가 없다 -

--XML of Row 
<Answer xmlns="http://TempNameSpace.com/AnswerData.xsd" Type="Deliverable"> 
    <Deliverable> 
    <Title>test</Title> 
    <Description>test</Description> 
    <DueDate>2010-02-16T08:59:59</DueDate> 
    </Deliverable> 
</Answer> 

나는 점점에 여러 가지 변화를 시도했다 루트 노드 ('대답'), 또는 아이의 어떤 그러나 나는 결과를 얻을

SELECT 
ref.value('/','nvarchar(1000)') 
FROM Mytable CROSS APPLY xmldata.nodes('/') R(ref) 

를 읽어 내 문을 변경, 경우 노드,testtest2010-02-16T08 : 59 : 59

I 좋겠 궁극적으로 도움을

SELECT 
    ref.value('/Title','nvarchar(1000)') as Title 
    ref.value('/Description','nvarchar(1000)') as Description 

etc.. 
    FROM Mytable CROSS APPLY xmldata.nodes('/Deliverable') R(ref) 

감사 등이 표 형식의 데이터, 뭔가 같은

당신은에주의를 지불하지 않는
+0

관심 대상이 될 수 있습니다. http://stackoverflow.com/questions/1302064/sql-server-2005-xml-query-works-value-requires-singleton-found-xdtuntype –

+0

예, 조금 도움이됩니다. 루트 노드에서 네임 스페이스 선언을 제거하면 이제 내 요소를 찾을 수 있습니다. 그러나 내 요소 중 명시 적 네임 스페이스 접두사가 없습니다 (예 : blah) 해야합니까? 내 xmlns = "http://TempNameSpace.com/AnswerData.xsd"줄을 내 xml에서 제거 할 수 있다고 가정합니다. 그러나 xml 유효성 검사를 사용하려고 계획했습니다. 감사합니다. – Beta033

+0

OOPS !!! @Myself : 대신 (/) [1] 부분에주의하십시오. 도움이 – Beta033

답변

4

플레이 XML 네임 스페이스 : 당신은 쿼리 할 때 계정에 그를 취할 필요가

<Answer xmlns="http://TempNameSpace.com/AnswerData.xsd" Type="Deliverable" 
     ********************************************** 

- 같은 것을 할 :

;WITH XMLNAMESPACES('http://TempNameSpace.com/AnswerData.xsd' AS ns) 
SELECT 
    ref.value('(ns:*)[1]', 'nvarchar(1000)') 
FROM Mytable 
CROSS APPLY xmldata.nodes('/ns:Answer') R(ref) 

<Answer>의 모든 내용을 ns: XML 네임 스페이스 접두어로 참조해야합니다.

+0

아하 !! 답변을 주셔서 감사합니다 & OMG Ponies. /나 아직 newb입니다. – Beta033

관련 문제