Sql server 2005 忽略T-SQL中的XML命名空间

Sql server 2005 忽略T-SQL中的XML命名空间,sql-server-2005,tsql,xml-namespaces,Sql Server 2005,Tsql,Xml Namespaces,在使用T-SQL查询数据时,如何删除/忽略XML文件中的XML命名空间 我正在将一个xml文件加载到一个变量中,它工作得很好。但是xml有一个名称空间集,除非我删除它,否则我的查询将是空的 T-SQL: DECLARE @xml xml SELECT @xml = BulkColumn FROM OPENROWSET(BULK 'C:\myfile.xml', SINGLE_BLOB) AS A SELECT X.z.value('ID[1]', 'VARCHAR(3)') FROM @xml

在使用T-SQL查询数据时,如何删除/忽略XML文件中的XML命名空间

我正在将一个xml文件加载到一个变量中,它工作得很好。但是xml有一个名称空间集,除非我删除它,否则我的查询将是空的

T-SQL:

DECLARE @xml xml
SELECT @xml = BulkColumn FROM OPENROWSET(BULK 'C:\myfile.xml', SINGLE_BLOB) AS A

SELECT X.z.value('ID[1]', 'VARCHAR(3)') FROM @xml.nodes('myroot/element') AS X(z)
XML示例:

<?xml version="1.0" encoding="utf-8"?>
<myroot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <element>
    <ID>1</ID>
  </element>
  <element>
    <ID>2</ID>
  </element>
  <element>
    <ID>3</ID>
  </element>
</myroot>

1.
2.
3.
这样,查询将返回以下内容:

1
2
三,

但XML还包含一个默认名称空间:

<myroot xmlns="http://XXX" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

xmlns=”http://XXX“
完全搞乱了我的查询。不幸的是,在加载xml之前手动修改它实际上不是一个选项

问题:

  • 在将数据加载到变量中时,如何删除或忽略名称空间
  • 或者如何修改查询以处理名称空间
只要用这个:

;WITH XMLNAMESPACES(DEFAULT 'http://XXX')
SELECT 
    X.z.value('ID[1]', 'VARCHAR(3)') 
FROM 
    @xml.nodes('/myroot/element') AS X(z)

带有XMLNAMESPACES的
允许您为查询定义名称空间别名,如果您不关心特定的XML名称空间前缀,可以将其定义为
默认
名称空间并使用它。

我在XML查询中遇到了同样的问题
Namespace“xmlns=“urn:tradefeed xsd”
产生了问题,我的查询返回空

<?xml version="1.0" encoding="UTF-8" ?> 
<BatchFeed xmlns="urn:tradefeed-xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

一旦我在select语句之前将
;与XMLNAMESPACES(默认的'urn:tradefeed xsd')
语句一起使用,它将返回数据