Как извлечь данные таблицы в формате XML с указанием формата c в описании? - PullRequest
1 голос
/ 01 февраля 2020

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

Вывод таблицы базы данных

TableName: StudentData

| KeyName    | KeyValue       |
|------------|----------------|
| StudentID  | 123456         |
| FirstName  | John           |
| LastName   | Doe            |
| Email      | jdoe@gmail.com |
| Phone      | 1234567890     |

Я пытаюсь сделать вывод, основываясь на приведенном ниже результате

Ниже ожидаемые результаты

<TestData>
  <Parameter key="StudentID">123456</Parameter>
  <Parameter key="FirstName">John</Parameter>
  <Parameter key="LastName">Doe</Parameter>
  <Parameter key="Email">jdoe@gmail.com</Parameter>
  <Parameter key="Phone">1234567890</Parameter>
</TestData>

Если у меня KeyName в качестве FieldName, тогда будет легко сделать XML данных в соответствии с оператором Select, показанным ниже. Также я знаю, что PIVOT может работать в моем формате таблицы StudentData, который указан выше, но это будет слишком длительный процесс.

SELECT 'StudentID' AS [Parameter/@key]
       ,StudentID AS [Parameter]
       ,''
       ,'FirstName' AS [Parameter/@key]
       , FirstName AS [Parameter]
       ,''
       ,'LastName' AS [Parameter/@key]
       ,LastName AS [Parameter]
       ,'Email' AS [Parameter/@key]
       ,Email AS [Parameter]
       ,'Phone' AS [Parameter/@key]
       ,Phone AS [Parameter]
FROM StudentData
FOR XML PATH('TestData');

Вопрос 1 : Как я могу сделать XML на основе имеющейся у меня таблицы данных ученика?

Вопрос 2 : Как я могу сделать его динамическим c, если добавлены новые строки, то также добавлено XML? 1027 *

Надеюсь, вы понимаете мой вопрос здесь. Если у вас есть вопросы. Пожалуйста, добавьте комментарий.

PN : Формат таблицы StudentData не может быть изменен. Так я должен работать текущий формат таблицы?

1 Ответ

1 голос
/ 01 февраля 2020

Ваша формулировка немного сбивает с толку, но если я вас правильно понимаю, рассмотрите следующее.

Пример

Select [Parameter/@key]=KeyName
      ,[Parameter]     =KeyValue
 from YourTable for XML Path(''),Root('TestData')

Возвращает

<TestData>
  <Parameter key="StudentID">123456</Parameter>
  <Parameter key="FirstName">John</Parameter>
  <Parameter key="LastName">Doe</Parameter>
  <Parameter key="Email">jdoe@gmail.com</Parameter>
  <Parameter key="Phone">1234567890</Parameter>
</TestData>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...