从 XML FLWOR 查询返回计算出的元素名称
我在 SQLServer 2008 R2 中有以下 XML 数据,
DECLARE @data XML
SET @data = '<root attr1="val1" attr2="val2" attr3="val3"/>'
我想从根获取属性名称列表,并将其作为元素列表输出,如下所示:
<root>
<attr1>val1</attr1>
<attr2>val2</attr2>
<attr3>val3</attr3>
</root>
我一直在使用 FLWOR 查询来获取我想要的内容。到目前为止,我有这个:
SELECT @data.query('
for $attr in /*/@*
return <test>{fn:string($attr)}</test>
')
这很好,几乎是我所需要的,但是当我尝试这样做时......
SELECT @data.query('
for $attr in /*/@*
return <{fn:local-name($attr)}>{fn:string($attr)}</{fn:local-name($attr)}>
')
它不高兴。除了硬编码的元素名称之外,它似乎不喜欢任何其他东西。
如何返回具有计算名称的元素?
I have the following XML data in SQLServer 2008 R2
DECLARE @data XML
SET @data = '<root attr1="val1" attr2="val2" attr3="val3"/>'
I would like to get a list of the attribute names from root and output that as a list of elements, like this:
<root>
<attr1>val1</attr1>
<attr2>val2</attr2>
<attr3>val3</attr3>
</root>
I have been playing around with FLWOR queries to get what I want. So far I have this:
SELECT @data.query('
for $attr in /*/@*
return <test>{fn:string($attr)}</test>
')
Which is fine and is almost what I need, but when I try and do this...
SELECT @data.query('
for $attr in /*/@*
return <{fn:local-name($attr)}>{fn:string($attr)}</{fn:local-name($attr)}>
')
its not happy. It's doesn't seem to like anything other than a hard coded element name.
How can I return an element with a computed name?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
根据微软 ,
According to Microsoft,
尝试计算元素构造函数:
Try computed element constructors: