Sql server 2005 忽略T-SQL中的XML命名空间
在使用T-SQL查询数据时,如何删除/忽略XML文件中的XML命名空间 我正在将一个xml文件加载到一个变量中,它工作得很好。但是xml有一个名称空间集,除非我删除它,否则我的查询将是空的 T-SQL: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
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.
这样,查询将返回以下内容:
12
三, 但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')
语句一起使用,它将返回数据