0
我试图通过SQL为负载测试生成一些XML,但我在正确构建XML时遇到了问题。这是我有:SQL中的XML:当使用表列而不是字符串时,元素值的计算方式不同
-- Generate XML from table
SELECT id AS '@id',
action AS '@action',
actionTime AS '@actionTime',
firstName AS '@firstName',
lastName AS '@lastName',
email AS '@email',
(SELECT isActive AS '@isActive',
actionTime AS '@actionTime',
displayName AS '@displayName',
identifierId
FOR XML PATH('identifier'), TYPE
)
FROM scratch.dbo.Identities
FOR XML PATH('user'), ROOT('Users')
这会生成XML,看起来像这样:
<Users>
<user id="QALoadTest1" action="add" actionTime="2015-11-01T00:00:00" firstName="Load" lastName="Test1" email="[email protected]">
<identifier isActive="1" actionTime="2015-11-01T00:00:00" displayName="Load Test 1">
<identifierId>1111111111</identifierId>
</identifier>
</user>
</Users>
如果我传递一个字符串作为标识符值,正确生成XML:
SELECT id AS '@id',
action AS '@action',
actionTime AS '@actionTime',
firstName AS '@firstName',
lastName AS '@lastName',
email AS '@email',
(SELECT isActive AS '@isActive',
actionTime AS '@actionTime',
displayName AS '@displayName',
'11111111111'
FOR XML PATH('identifier'), TYPE
)
FROM scratch.dbo.Identities
FOR XML PATH('user'), ROOT('Users')
这将生成以下,这正是我想要的:
<Users>
<user id="QALoadTest1" action="add" actionTime="2015-11-01T00:00:00" firstName="Load" lastName="Test1" email="[email protected]">
<identifier isActive="1" actionTime="2015-11-01T00:00:00" displayName="Load Test 1">11111111111</identifierId>
</user>
</Users>
在这里使用列值和字符串有什么区别?有趣的是,当我将列值换成单引号(''' + identifierId + '''
)时,它会生成正确结构的XML,但带有额外的引号(...displayName="Load Test 1">'11111111111'</identifierId>
)
太棒了,谢谢!工作就像一个魅力:) –