我想嵌套每个XML元素。
采用以下示例:
DECLARE @TempTable TABLE
(
[Column1] char(10),
[Column2] char(10)
);
INSERT INTO @TempTable([Column1], [Column2]) VALUES
('some value', 'some value'),
('some value', 'some value'),
('some value', 'some value'),
('some value', 'some value')
SELECT (
SELECT * FROM @TempTable
FOR XML PATH('Row'), TYPE)
FOR XML PATH('ParentRow'), ROOT('Root')
将返回以下XML:
<Root>
<ParentRow>
<Row>
<Column1>some value</Column1>
<Column2>some value</Column2>
</Row>
<Row>
<Column1>some value</Column1>
<Column2>some value</Column2>
</Row>
<Row>
<Column1>some value</Column1>
<Column2>some value</Column2>
</Row>
<Row>
<Column1>some value</Column1>
<Column2>some value</Column2>
</Row>
</ParentRow>
</Root>
这不是我想要格式化XML的方式。相反,我希望每个<Row>
元素都包含一个<ParentRow>
元素,如下所示:
<Root>
<ParentRow>
<Row>
<Column1>some value</Column1>
<Column2>some value</Column2>
</Row>
</ParentRow>
<ParentRow>
<Row>
<Column1>some value</Column1>
<Column2>some value</Column2>
</Row>
</ParentRow>
<ParentRow>
<Row>
<Column1>some value</Column1>
<Column2>some value</Column2>
</Row>
</ParentRow>
<ParentRow>
<Row>
<Column1>some value</Column1>
<Column2>some value</Column2>
</Row>
</ParentRow>
</Root>
对这些家伙有任何帮助吗?
答案 0 :(得分:6)
好的,这是代码。
DECLARE @TempTable TABLE
(
[Column1] char(10),
[Column2] char(10)
);
INSERT INTO @TempTable([Column1], [Column2]) VALUES
('some value', 'some value'),
('some value', 'some value'),
('some value', 'some value'),
('some value', 'some value')
SELECT (
SELECT (
SELECT T1.*
FOR XML path('')
,root('Row')
,type
)
FROM @TempTable AS T1
FOR XML path('ParentRow')
,type
)
FOR XML path('Root')
这是输出。
<Root>
<ParentRow>
<Row>
<Column1>some value</Column1>
<Column2>some value</Column2>
</Row>
</ParentRow>
<ParentRow>
<Row>
<Column1>some value</Column1>
<Column2>some value</Column2>
</Row>
</ParentRow>
<ParentRow>
<Row>
<Column1>some value</Column1>
<Column2>some value</Column2>
</Row>
</ParentRow>
<ParentRow>
<Row>
<Column1>some value</Column1>
<Column2>some value</Column2>
</Row>
</ParentRow>
</Root>
祝你好运......
答案 1 :(得分:0)
SELECT (SELECT * FROM @TempTable
WHERE t.Column1 = Column1
FOR XML PATH('ParentRow'),ROOT('Row'), TYPE)
FROM @TempTable t
FOR XML PATH(''), ROOT('Root')
<Root>
<Row>
<ParentRow>
<Column1>some value1</Column1>
<Column2>some value </Column2>
</ParentRow>
</Row>
<Row>
<ParentRow>
<Column1>some value2</Column1>
<Column2>some value </Column2>
</ParentRow>
</Row>
<Row>
<ParentRow>
<Column1>some value3</Column1>
<Column2>some value </Column2>
</ParentRow>
</Row>
<Row>
<ParentRow>
<Column1>some value4</Column1>
<Column2>some value </Column2>
</ParentRow>
</Row>
</Root>