У меня есть куча XML-файлов, которые мне нужны для синтаксического анализа SQL.SQL Parse xml string
XML, может принимать многочисленные формы:
<Grandparent>
<parent>
<child1>something</child1>
<child2>something</child2>
</parent>
</Grandparent>
или
<Grandparent>
<child1>something</child1>
<child2>something</child2>
</Grandparent>
Кроме того, число узлов «ребенок» является переменной величиной, и нет никакого способа узнать заранее, сколько детей есть.
Что я сделал до сих пор:
@xml.nodes('/Grandparent')
, который возвращает либо <parent>
узел и детей или просто child
узлов в зависимости от формата XML.
Версия SQL и тот факт, что я пишу ее как функцию SQL, похоже, означает, что попытка получить value
, как показано в this anwser, не работает.
Поэтому я решил разобрать строку. По существу, я ищу <
и возьму подстроку оттуда до >
для имени узла. Затем я беру что-то между >
и </
для значения. Я делаю это в цикле while, пока строка xml не будет завершена. Он отлично работает, если у xml нет этого узла parent
.
Я не знаю, как определить, есть ли этот узел parent
и как игнорировать его, если это так. Вот где я застрял.
То, что я хочу получить в любом случае:
Node | Value
child1 | something
child2 | something
и т.д. для как много дочерних узлов, что есть.
Что RDBMS вы используете? –
Все еще не ясно, что если вы можете сделать '@ xml.nodes ('/ Grandparent')', почему тогда вы не можете получить 'значение', как показано в этой ссылке ответа? И учитывая, что 2 образца, каков результат, который вы ожидаете получить? – har07
@ Политбанк-З да! MS SQL-сервер. –