Я получаю XML-строку для многих таблиц. Проблема заключается в том, что вместо иметь этот форматПолучить все узлы XML, которые содержат определенный внутренний узел в T-SQL
<root>
<Candy>
<Name>M-M</Name>
<Size>Small</Size>
</Candy>
<Candy>
<Name>KitKat</Name>
<Size>Medium</Size>
</Candy>
<Fruit>
<Description>Banana</Description>
<Color>Yellow</Color>
</Fruit>
<Fruit>
<Description>Cherry</Description>
<Color>Red</Color>
</Fruit>
<root>
Что я получаю
<root>
<Candy>
<M-M>
<Size>Small</Size>
</M-M>
<KitKat>
<Size>Medium</Size>
<KitKat>
</Candy>
<Fruit>
<Banana>
<Color>Yellow</Color>
</Banana>
<Cherry>
<Color>Red</Color>
</Cherry>
</Fruit>
</root>
Мне нужно вставить строки конфеты в таблице конфеты и строки для фруктов в таблице фруктов. Если бы я получил первый формат, я бы просто сделать
select *
from
openxml (@hDoc, '/root/Candy', 2)
, и я хотел бы получить все конфеты строки, но ребята с другой стороны веб-службы не хотят, чтобы отправить его таким образом. Итак, прежде чем я поставил бой, есть ли способ получить все Candy, используя второй формат xml? например, запрашивать все узлы с внутренним узлом с именем «Размер»? Я использую SQLServer 2008, поэтому я могу использовать либо инструкцию openxml, либо новые функции узла, которые я еще не научился использовать. Кроме того, скорость процесса является более важным, чем память, я думаю ...