Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 XML тэг целиком  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Всем доброго времени!

Есть такой XML и запрос к нему

declare @reasons xml;

set @reasons =
'

<Data classTypeSynonym = "SPR_ENTITY_INV_TBADS" classTypeID = "86C934D2-82E1-DD11-8FE3-0014220CF58C">
 <attribute synonym="STATUS_REASONS_LIST_autoArchived" value="0"/>
 <attribute synonym="STATUS_REASONS_LIST_runMaxReached" value="1"/>
</Data>

<Data classTypeSynonym = "SPR_ENTITY_INV_TBCAMPAIGNS" classTypeID = "86C934D2-82E1-DD11-8FE3-0014220CF58C">
 <attribute synonym="STATUS_REASONS_LIST_spendigCapReached" value="1"/>
</Data>
'


select @reasons.query('./Data[@classTypeSynonym="SPR_ENTITY_INV_TBADS"]/node()') as currentLevel
select @reasons.query('./Data[@classTypeSynonym="SPR_ENTITY_INV_TBADS"]/../node()') as levelUp

select t.c.value('./@classTypeSynonym', 'nvarchar(200)') as classTypeSynonym,
       t.c.query('./node()') currentLevel,
       t.c.query('../node()') levelUp
  from @reasons.nodes('/Data') t(c)

но мне надо получить вот такой результат

<Data classTypeSynonym = "SPR_ENTITY_INV_TBADS" classTypeID = "86C934D2-82E1-DD11-8FE3-0014220CF58C">
 <attribute synonym="STATUS_REASONS_LIST_autoArchived" value="0"/>
 <attribute synonym="STATUS_REASONS_LIST_runMaxReached" value="1"/>
</Data>

а получаю только такой
 <attribute synonym="STATUS_REASONS_LIST_autoArchived" value="0"/>
 <attribute synonym="STATUS_REASONS_LIST_runMaxReached" value="1"/>
или весь ХМЛ.

Если вводить новый уровень тэга, а потом подниматсья на один уровнь вверх и вызывать метод nodes(), то проблем нет. Но я не хочу вводить ни новый тэг, ни востанавливать этот уровень конкатенацией строк (или методом ХМЛ). Тем более я проверяю один атрибут, а их может быть несколько.
Ещё бы хотелось ссылочку где откуда можно получить подобную инфу.

Заранее спасибо.
23 окт 09, 14:12    [7829799]     Ответить | Цитировать Сообщить модератору
 Re: XML тэг целиком  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

проще надо быть :)
select @reasons.query('./Data[@classTypeSynonym="SPR_ENTITY_INV_TBADS"]')

select t.c.value('./@classTypeSynonym', 'nvarchar(200)') as classTypeSynonym,
        t.c.query('./node()') currentLevel,
        t.c.query('.') levelUp
   from @reasons.nodes('/Data') t(c)

Posted via ActualForum NNTP Server 1.4

23 окт 09, 14:20    [7829874]     Ответить | Цитировать Сообщить модератору
 Re: XML тэг целиком  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
daw

проще надо быть :)
select @reasons.query('./Data[@classTypeSynonym="SPR_ENTITY_INV_TBADS"]')

select t.c.value('./@classTypeSynonym', 'nvarchar(200)') as classTypeSynonym,
        t.c.query('./node()') currentLevel,
        t.c.query('.') levelUp
   from @reasons.nodes('/Data') t(c)

блинн, спасибо!
23 окт 09, 14:23    [7829908]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить