1

我正在使用 SQL Server 和 VB.NET。在我的 SQL 中,我使用以下内容:

select top 1 * from tablename where 1=0 for xml auto, type, xmlschema

获取表名的架构。然后我用

select * from tablename where ID=1 for xml, auto, type, elements xsinil, root('xml')

获取我感兴趣的数据行。

如果我在 VB 中使用以下代码:

Private ds as New Dataset

ds.ReadXMLSchema("xmlschema.txt")

我最终得到一个 ds 包含一个表,其中包含一组正确定义的列

如果我再尝试:

ds.ReadXML("xmldata.txt")

代码成功,但我的数据集表中没有任何行。

我的问题是,我需要做什么才能将 SQL Server 创建的 xml 数据读入具有 SQL Server 指定架构的数据表中。

4

1 回答 1

0
  1. 您需要XMLSchema在第二个(数据)查询以及第一个(模式)查询中包含该子句。如果您不这样做,那么数据输出将缺少命名空间,因此将不符合架构。

  2. 您需要通过限定XMLSchema指令(例如XMLSchema('http://tempuri.org'))来为您的模式指定目标名称空间。如果您不这样做,那么 SQL Server 将在每个查询中为您生成一个命名空间,并且它们可能不匹配。

  3. 您需要确保FOR XML两个查询的列列表和子句完全相同。在您的示例中,您已xsinil在数据查询中指定,但未在模式查询中指定。

所以在这里你需要为模式查询指定这样的东西

select top 1 * from tablename 
where 1=0 
for xml auto, type, elements xsinil, root('xml'), xmlschema('http://tempuri.org')

这用于数据查询

select * from tablename 
for xml auto, type, elements xsinil, root('xml'), xmlSchema('http://tempuri.org')
于 2013-06-04T08:28:28.583 回答