Ignorer espace de noms XML en T-SQL
Comment puis-je supprimer/ignorer l'espace de noms XML dans un fichier xml lors de l'interrogation des données avec T-SQL?
Je suis le chargement d'un fichier xml dans une variable, et il fonctionne très bien. Mais le xml est un espace de jeu, et à moins que je le supprime, mes requêtes rien.
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)
Exemple 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>
Cela fonctionne, la requête renvoie ceci:
1
2
3
Mais le XML contient également un espace de noms par défaut:
<myroot xmlns="http://XXX" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
La xmlns="http://XXX"
complètement les vis jusqu'à ma requête. Et malheureusement manuellement modifier le xml avant le chargement, il n'est pas vraiment une option.
Questions:
- Comment puis-je supprimer ou ignorer l'espace de noms lorsque je charge les données dans la variable?
- Ou comment puis-je modifier ma requête pour gérer l'espace de noms?
OriginalL'auteur Jakob Gade | 2011-03-29
Vous devez vous connecter pour publier un commentaire.
Utiliser seulement ceci:
La
WITH XMLNAMESPACES
vous permet de définir l'espace de noms aliasses pour vos questions, et si vous n'avez pas de soins sur un préfixe d'espace de noms XML, vous pouvez simplement définir commeDEFAULT
espace de noms et être fait avec elle.OriginalL'auteur marc_s
J'ai été confrontée au même problème dans ma Requête XML.
Namespace "xmlns="urn:tradefeed-xsd"
a été crée le problème et ma requête retourne vide.Une fois que j'ai utilisé
;WITH XMLNAMESPACES(DEFAULT 'urn:tradefeed-xsd')
déclaration devant mon instruction select, il renvoie les données.OriginalL'auteur Ram