Hen*_*ryC 8 xml sql sql-server
我基本上试图扭转这个问题的问题... SQL Server查询元素值的xml属性
我需要生成一个"row"元素的结果集,其中包含一组带有定义键的属性的"field"元素.
<resultset statement="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<row>
<field name="id">1</field>
<field name="version”>0</field>
<field name="property">My Movie</field>
<field name="release_date">2012-01-01</field>
<field name="territory_code”>FR</field>
<field name="territory_description">FRANCE</field>
<field name="currency_code”>EUR</field>
</row>
<row>
<field name="id">2</field>
<field name="version”>0</field>
<field name="property">My Sequel</field>
<field name="release_date">2014-03-01</field>
<field name="territory_code”>UK</field>
<field name="territory_description">United Kingdom</field>
<field name="currency_code”>GBP</field>
</row>
</resultset>
Run Code Online (Sandbox Code Playgroud)
我有一个返回此查询...
<resultset statement="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<row>
<id>1</id>
<version>0</version>
<property>My Movie</property>
<release_date>2012-01-01</release_date>
<territory_code>FR</territory_code>
<territory_description>FRANCE</territory_description>
<currency_code>EUR</currency_code>
</row>
<row>
<id>2</id>
<version>0</version>
<property>My Sequel</property>
<release_date>2014-03-01</release_date>
<territory_code>UK</territory_code>
<territory_description>UNITED KINGDOM</territory_description>
<currency_code>GBP</currency_code>
</row>
</resultset>
Run Code Online (Sandbox Code Playgroud)
使用FOR XML PATH ('row'), ROOT ('resultset')我的SQL语句.
我错过了什么?谢谢.
它有点涉及SQL Server - 正常行为就是您所看到的 - 列名将用作XML元素名称.
如果您确实希望所有XML元素都被命名为相同,那么您将不得不使用如下代码:
SELECT
'id' AS 'field/@name',
id AS 'field',
'',
'version' AS 'field/@name',
version AS 'field',
'',
'property' AS 'field/@name',
property AS 'field',
'',
... and so on ....
FROM Person.Person
FOR XML PATH('row'),ROOT('resultset')
Run Code Online (Sandbox Code Playgroud)
这是确保列名用作元素的name属性<field>所必需的,并且空字符串是必需的,以便SQL XML解析器不会混淆哪个name属性属于哪个元素......