2013-02-20 3 views
1

Учитывая следующее:Выберите элемент из XML

declare @samplexml as xml 
set @samplexml = '<root><someelement><another /><somethingElse>test</somethingElse></someelement></root>' 

select 
    @samplexml.value('/root[1]','nvarchar(max)') 

Я получаю результат:

test

Но я хочу результат:

<root><someelement><another /><somethingElse>test</somethingElse></someelement></root>

Как я могу выбрать фактический элемент XML? Я также пробовал:

select 
    @samplexml.value('/root[1]','XML') 

Но я получил ошибку The data type 'XML' used in the VALUE method is invalid..

+0

Вы пытаетесь получить полный xml, указанный в качестве входных данных? – misha

ответ

4

Просто используйте .query() метод вместо .value():

SELECT @samplexml.query('/root[1]') 

или

SELECT @samplexml.query('.') 

Это возвращает элемент (и его содержимое), что соответствует этому выражение XPath дано, и он возвращается как XML типа

Смежные вопросы