Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Alex-65 Member Откуда: Сообщений: 28 |
Уважаемые коллеги! Помогите с изменением XML - нужно удалить все элементы "code" во всех узлах. XML такой: DECLARE @xml XML SET @xml=' <ns2:parentNode xmlns:ns2="http://www.site1.ru/export/1"> <ns2:node1> <p1:id xmlns:p1="http://www.site1.ru/types/1">40131</p1:id> <p2:code xmlns:p2="http://www.site1.ru/types/1">34.10.13.241</p2:code> <p3:name xmlns:p3="http://www.site1.ru/types/1">Двигатели внутреннего сгорания 1</p3:name> </ns2:node1> <ns2:node2> <p4:id xmlns:p4="http://www.site1.ru/types/1">40132</p4:id> <p5:code xmlns:p5="http://www.site1.ru/types/1">34.10.13.242</p5:code> <p6:name xmlns:p6="http://www.site1.ru/types/1">Двигатели внутреннего сгорания 2</p6:name> </ns2:node2> </ns2:parentNode> ' нужно удалить элементы CODE (code) во всех узлах, чтобы получилось примерно так: <ns2:parentNode xmlns:ns2="http://www.site1.ru/export/1"> <ns2:node1> <p1:id xmlns:p1="http://www.site1.ru/types/1">40131</p1:id> <p3:name xmlns:p3="http://www.site1.ru/types/1">Двигатели внутреннего сгорания 1</p3:name> </ns2:node1> <ns2:node2> <p4:id xmlns:p4="http://www.site1.ru/types/1">40132</p4:id> <p6:name xmlns:p6="http://www.site1.ru/types/1">Двигатели внутреннего сгорания 2</p6:name> </ns2:node2> </ns2:parentNode> заранее спасибо! |
10 июл 15, 14:34 [17876984] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9633 |
while @xml.exist('//*:code') = 1 set @xml.modify('delete //*:code[1]'); |
10 июл 15, 14:45 [17877066] Ответить | Цитировать Сообщить модератору |
Alex-65 Member Откуда: Сообщений: 28 |
invm, Спасибо! работает. но не быстро ... :(( а можно этот запрос как-то ускорить? т.к. у меня узлов, к сожалению, не 2, а несколько тысяч ... да и самих XML'ей тже много или м.б. есть какой-то другой способ? |
10 июл 15, 14:58 [17877158] Ответить | Цитировать Сообщить модератору |
churupaha Member Откуда: Краснодар Сообщений: 1015 |
invm, + у меня так отработало set @xml.modify('declare namespace n="http://www.site1.ru/types/1"; delete //n:code') select @xml; |
10 июл 15, 15:00 [17877168] Ответить | Цитировать Сообщить модератору |
churupaha Member Откуда: Краснодар Сообщений: 1015 |
+ чтобы было быстрее надо избавиться от // и использовать абсолютные пути. |
10 июл 15, 15:02 [17877189] Ответить | Цитировать Сообщить модератору |
churupaha Member Откуда: Краснодар Сообщений: 1015 |
+ node1 node2 node3 не получится абсолютный путь. |
10 июл 15, 15:06 [17877223] Ответить | Цитировать Сообщить модератору |
Alex-65 Member Откуда: Сообщений: 28 |
churupaha, Спасибо! В первом случае (автор: invm) Время:53.391 cек. Во втором случае (автор: churupaha) Время:0.310 cек. почувствуйте разницу ;)) Коллеги, invm и churupaha еще раз Спасибо! |
10 июл 15, 15:13 [17877269] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |