当前位置: 首页 > 面试题库 >

SQL Server使用通用字段元素生成XML

松高爽
2023-03-14
问题内容

我需要生成一个“行”元素的结果集,其中包含一组具有定义键的属性的“字段”元素。

<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>

我有一个查询返回此…

<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>

使用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')

这是确保将列名用作元素name上的属性<field>所必需的,并且必须使用空字符串,以使SQL
XML解析器不会混淆哪个name属性属于哪个元素……



 类似资料:
  • myType也被定义为complexType。然后得到生成的类MyResponse.java和Reference.java。我可以通过以下方式分配“引用”的值: 而且奏效了。 现在我只是删除了maxOccurs=“unbounded”,它不再起作用了。响应不再是List类型,而是JaxBelement类型。我试着用: 谁能告诉我,当它不是一个列表时,什么是正确的做法?

  • 我是新的Webdriver,我不能让你知道的网站名称和凭据,因为这是一个正在进行的项目,我的公司。我陷入了一个位置,在该网站的一个页面中,有一个通过ajax在运行时生成的表,其中的所有数据也是在运行时生成的,该表中有一个元素,其xpath为,但当我试图使用webdriver查找该元素时,webdriver无法找到该元素,并且我得到一条错误消息,如下所示

  • 我想做一个这样的数组: 从HTML中取出,如下所示: 但我得到的数组是这样的:

  • 我的自动化测试有问题,我的测试通过Eclipse运行没有问题。 但是当我想在Jenkins上运行这个测试时,它总是在同一行(在同一个选择器上)失败。 在端口21173上运行TestSuite启动ChromeDriver2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4)仅允许本地连接。测试运行: 1,失败: 1,错误: 0,跳过: 0,时间流

  • 我想编写一个xsd,它只通过强制字段的验证。 我在下面写了xsd的xml。 在上述xml中,OrderNo、OrgCode、OrderLineNo、OrderLineKey是必填字段。 我已经为上述xml编写了以下xsd。 现在,我想让下面的xml对照上面的xsd进行验证,xsd具有一些可选的附加属性。具体如下: 我希望我的xsd以允许任意数量的可选属性(Email、Qty和任何非强制属性)和元素