Как удалить / игнорировать пространство имен XML в файле XML при запросе данных с помощью T-SQL?
Я загружаю 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 перед загрузкой - это не вариант.
Вопросы:
- Как мне удалить или игнорировать пространство имен при загрузке данных в переменную?
- Или как мне изменить мой запрос для обработки пространства имен?