c# - 如何将多个表作为一个 XML 返回?
问题描述
我有以下脚本:
DECLARE @columns TABLE (
Caption varchar(50),
Width int);
INSERT INTO @columns
VALUES ('Id', 0), ('Name', 100);
DECLARE @rows TABLE (
Id int,
[Name] varchar(50));
INSERT INTO @rows
VALUES (1, 'John'), (2, 'Steve');
SELECT *,
(SELECT *
FROM @rows
FOR XML PATH('Row'), ROOT('Rows'), TYPE, ELEMENTS)
FROM @columns
FOR XML PATH('Column'), ROOT('Results'), TYPE, ELEMENTS;
我需要返回以下 XML:
<Results>
<Columns>
<Column>
<Caption>Id</Caption>
<Width>0</Width>
</Column>
<Column>
<Caption>Name</Caption>
<Width>100</Width>
</Column>
</Columns>
<Rows>
<Row>
<Id>1</Id>
<Name>John</Name>
</Row>
<Row>
<Id>2</Id>
<Name>Steve</Name>
</Row>
</Rows>
</Results>
我的想法是我会将 XML 转换为DataSet
2 DataTables
(一个用于列,另一个用于行)。我将使用它来填充DataGridView
.
但是,我的问题是我当前生成的 XML 格式不正确,与我预期的不一样。
按预期生成 XML 的正确语法是什么?
解决方案
根据我们拥有的数据,这将为您提供所需的结果:
SELECT (SELECT Caption,
Width
FROM @columns
FOR XML PATH('Column'),TYPE) AS [Columns],
(SELECT Id,
[Name]
FROM @rows
FOR XML PATH('Row'),TYPE) AS [Rows]
FOR XML PATH ('Results');
推荐阅读
- android - 禁用指纹传感器 - Android 模拟器
- scala - jar 版本问题或 scala 问题
- android-studio - android studio logcat 删除日期,处理信息
- lets-encrypt - Traefik 与 LetsEncrypt 通配符和 Dyn DNS
- jenkins - 加强 CI 集成
- javascript - 我可以使用 html 和 Javascript 为表动态创建下拉行吗
- path - JAVA LIBRrary 路径中没有 ssjavacom.dll
- google-cloud-platform - 如何设置 Cloud Composer 以发送电子邮件?
- python - 关闭控制台但让 selenium 浏览器保持打开状态
- containers - lxc 容器未启动