如何在使用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
但是 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并不是一个很好的选择。
问题:
- 当我将数据加载到变量中时,如何删除或忽略命名空间?
- 或者,如何修改我的查询以处理命名空间?