Заставить MS SQL 2008 генерировать XML как MySQL 5.0? - PullRequest
0 голосов
/ 02 марта 2010

Некоторое время назад я написал приложение, основанное на XML, выходящем из базы данных MySQL 5.0. Он получил этот вывод XML, вызвав клиента mysql напрямую, используя параметр командной строки --xml; это сделало вывод MySQL XML, который выглядел примерно так:

<resultset statement="SELECT * FROM tablename " 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <row>
        <field name="some_int">2</field>
        <field name="some_varchar">a string</field>
    </row>
</resultset>

Теперь я пытаюсь перейти на MS SQL 2008. У меня все таблицы перенесены, и клиентская сторона может вызывать почти все, что захочет, так что никаких проблем нет. Моя проблема в том, чтобы заставить MS SQL выводить ожидаемый XML - есть ли простой способ создать такую ​​же структуру?

До сих пор я смотрел на параметр FOR XML в операторе SELECT, и он кажется очень близким к тому, что я хочу сделать (используя вариант PATH), но есть один незначительный трюк: он не больше не выводит <field> тегов, но вместо этого присваивает тегам имя с именем столбца, поэтому приведенный выше XML становится:

<row>
    <some_int>2</some_int>
    <some_varchar>a string</some_varchar>
</row>

(Обратите внимание, что тег <resultset> также пропал; это не такая уж большая проблема, но если MS SQL тоже может это сгенерировать, бонусные очки.)

Любой простой способ получить ту же XML-структуру из MS SQL, что и MySQL, кроме написания моего собственного генератора XML? В идеале я хотел бы использовать любую комбинацию FOR XML в командах SELECT, sqlcmd или osql для создания правильного текста - не обязательно должно быть красиво.

Редактировать: Утверждение, которое я выполняю, очень простое SELECT * FROM tablename.

1 Ответ

1 голос
/ 02 марта 2010

Я думаю, что лучше всего было бы использовать XSD. Чтобы получить его в том же формате, вам нужно будет выполнить некоторые манипуляции самостоятельно, но вы можете вывести данные в виде XML без особых проблем.

http://msdn.microsoft.com/en-us/library/aa258637(SQL.80).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...