Создание XML с использованием SQL Сервера, использующего теги Excel - PullRequest
1 голос
/ 17 марта 2020

Я пытаюсь получить следующий вывод:

<Cell ss:StyleID="s87">
    <Data ss:Type="String">N</Data>
    <NamedCell ss:Name="_FilterDatabase"/>
</Cell>

Мой SQL код выглядит следующим образом:

SELECT
    'String' AS 'Data/@type',
    [Submit]  AS [Data], 
    NULL
FROM 
    dbo.[XML_Table]
FOR XML PATH ('Row')

Полученный результат выглядит следующим образом

<Row>
    <Data type="String">Y</Data>
</Row>

Как мне go сделать так, чтобы это выглядело так:

<Cell ss:StyleID="s87">
    <Data ss:Type="String">Y</Data>
    <NamedCell ss:Name="_FilterDatabase"/>
</Cell>

Спасибо

пример выходной таблицы, показывающий все поля, но я просто использую поле отправки в качестве пример:

enter image description here

1 Ответ

2 голосов
/ 17 марта 2020

С помощью этого кода вы можете быть довольно близко - при условии, что у вас есть все значения элементов и атрибутов, которые выводятся в вашем XML внутри некоторой таблицы в SQL Сервер:

DECLARE @Input TABLE (StyleId VARCHAR(20), 
                      CellType VARCHAR(20),
                      CellData VARCHAR(20), 
                      CellName VARCHAR(50))

INSERT INTO @Input (StyleId, CellType, CellData, CellName)
VALUES ('s87', 'String', 'Y', '_FilterDatabase');

WITH XMLNAMESPACES('urn:test' AS ss)
SELECT
    StyleId AS '@ss:StyleID',
    CellType AS 'Data/@ss:Type',
    CellData AS 'Data',
    CellName AS 'NamedCell/@ss:Name',
    '' AS 'NamedCell'
FROM
    @Input
FOR XML PATH('Cell')

Это приводит к вывод:

<Cell xmlns:ss="urn:test" ss:StyleID="s87">
  <Data ss:Type="String">Y</Data>
  <NamedCell ss:Name="_FilterDatabase"></NamedCell>
</Cell>

Я не понимаю, как можно "пропустить" фактическое объявление псевдонима пространства имен XML, так что это будет отображаться на вашем узле <Cell> верхнего уровня.

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