在SQL Server 2005中“FOR XML PATH” XML声明
-
22-09-2019 - |
题
下面是我已经创建了一个查询的简化版本。查询工作正常,但我无法弄清楚如何在生成的XML的顶部得到XML声明。我试过多种东西,远近搜索在谷歌,但似乎唉,我不能找出如何做到这一点?或者即使它是可能的。
select
'Dimension' "@type",
(
select
(
select
'X102' "TransactionType",
convert(varchar, getdate(), 104) "Transfer/TransferDate",
convert(varchar, getdate(), 108) "Transfer/TransferTime"
for xml path (''), type
) "TransactionInformation"
for xml path (''), type
)
for xml path ('DimensionImport'), type
<强>给我... 强>
<DimensionImport type="Dimension">
<TransactionInformation>
<TransactionType>X102</TransactionType>
<Transfer>
<TransferDate>21.01.2010</TransferDate>
<TransferTime>15:46:36</TransferTime>
</Transfer>
</TransactionInformation>
</DimensionImport>
我想......
<?xml version="1.0" encoding="ISO-8859-1" ?>
<DimensionImport type="Dimension">
<TransactionInformation>
<TransactionType>X102</TransactionType>
<Transfer>
<TransferDate>21.01.2010</TransferDate>
<TransferTime>15:46:36</TransferTime>
</Transfer>
</TransactionInformation>
</DimensionImport>
感谢您提前为你也许可以借给任何帮助。
解决方案 4
下面是我落得这样做。数据类型不返回作为XML数据类型,但我可以处理我想。
select '<?xml version="1.0" encoding="ISO-8859-1" ?>' +
(
select
'Dimension' "@type",
(
select
(
select
'X102' "TransactionType",
convert(varchar, getdate(), 104) "Transfer/TransferDate",
convert(varchar, getdate(), 108) "Transfer/TransferTime"
for xml path (''), type
)
for xml path ('TransactionInformation'), type
),
(
... queried up data here ...
)
for xml path ('DimensionImport')
)
其他提示
它的混乱,但你可以很拼接它的前...
SELECT '<? xml...>' +
(select
'Dimension' "@type",
(
select
(
select
'X102' "TransactionType",
convert(varchar, getdate(), 104) "Transfer/TransferDate",
convert(varchar, getdate(), 108) "Transfer/TransferTime"
for xml path (''), type
) "TransactionInformation"
for xml path (''), type
)
for xml path ('DimensionImport'), type)
尝试这样:
select '<?xml version="1.0" encoding="ISO-8859-1" ?>' +
(your whole upper select here)
不幸的是,这是我在 SQL Server丛书在线:
不保留在一个实例XML声明PI当实例存储在数据库中。例如:
Copy Code CREATE TABLE T1 (Col1 int primary key, Col2 xml)
GO
INSERT INTO T1 values (1, '<?xml version="1.0" encoding="windows-1252" ?><doc></doc>')
GO
SELECT Col2
FROM T1
结果是<doc/>
。
唯一的解决方法是返回XML作为一个varchar(最大)类型:
select '<?xml version="1.0" encoding="ISO-8859-1" ?>'
+
cast( (
select
'Dimension' "@type",
(
select
(
select
'X102' "TransactionType",
convert(varchar, getdate(), 104) "Transfer/TransferDate",
convert(varchar, getdate(), 108) "Transfer/TransferTime"
for xml path (''), type
) "TransactionInformation"
for xml path (''), type
)
for xml path ('DimensionImport'), type) as varchar(max))
在从EM 2008 R2,如果打开“另存为”扩大“保存”按钮,则可以保存巫编码,在这之后,XML声明被自动添加。
希望它帮助。 问候。
不隶属于 StackOverflow