使用openxml获取祖先标记名称

时间:2012-07-19 18:53:49

标签: sql-server-2008 openxml

我试图在sql server 2008中使用open xml获取祖先标记名称。以下是我到目前为止所尝试的内容:

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

我需要获取第3个标签的名称,*。我可以成功运行parentlocalname和localname,但是对于父级的父级没有任何作用。 我已经尝试了上面的许多变量,它只是错误地说没有定义名称空间mp。甚至可以获取该名称。

1 个答案:

答案 0 :(得分:1)

这有点hacky,但是应该有用,../../.是你要找的任何一个父母的路径。

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

Working example.

相关问题