2012-07-19 44 views
0

我試圖在SQL Server 2008中使用這裏的Open XML獲得祖先標籤名稱的祖先標籤名稱是我到目前爲止已經試過:獲取使用OPENXML

SELECT * FROM OPENXML(@idoc, '/Envelope/Body/*/TagParent/Tag') 
WITH (
    [Name] varchar(max) '../@mp:parentLocalName' 
) 

我需要得到3名標籤,*。我可以成功運行parentlocalname和localname,但沒有爲父母的父母工作。 我已經嘗試了上面的許多變體,它只是錯誤地說名稱空間mp沒有被定義。是否可以獲取該名稱?

+0

../../@mp:parentLocalName? – Bert 2012-07-19 18:57:06

+0

@Bert Evans是的,嘗試了所有這些變化。只要我把任何東西放在它的前面,@ mp就停止工作。 – Sarwara 2012-07-19 19:00:12

回答

1

這是一個小黑客,但應該工作,其中../../.是你尋找任何父母的路徑。

SELECT Name.value('local-name((*)[1])','nvarchar(100)') 
FROM OPENXML(@idoc, '/Envelope/Body/*/TagParent/Tag') 
WITH (
    [Name] xml '../../.' 
) 

Working example.

+0

我會稍微檢查一下,雖然我改變了不再需要的要求,但是這總是讓我感到困擾!所以任何解決方案的作品將足夠我:) – Sarwara 2012-07-19 21:15:05

+0

它給出了一個錯誤,說選擇失敗,因爲下面的設置選項有不正確的設置:'QUOTED_IDENTIFIER'。 – Sarwara 2012-07-19 23:00:51

+0

我會試着找到另一臺機器,以便稍後進行測試。 – Sarwara 2012-07-19 23:01:52