Pour fond.Voir cette question:Problèmes d'utilisation espace de noms dans le type de données XML SQL Server requête
SQL Server XML Data Type query issue
J'essaie d'interroger contre un objet XML dans SQL Server 2005. La requête fonctionne très bien quand il n'y a pas namespace défini dans le XML. Cependant, quand l'élément namespace est là, je n'arrive pas à obtenir la valeur d'un élément node. Voici un exemple:
DECLARE @xmlWithNameSpace XML
DECLARE @xmlWithoutNameSpace XML
SET @xmlWithNameSpace = '<?xml version="1.0" encoding="UTF-8"?>
<Feed xmlns="gizmo">
<Product id="4444">
<ProductId>4444</ProductId>
</Product>
</Feed>'
SET @xmlWithoutNameSpace = '<?xml version="1.0" encoding="UTF-8"?>
<Feed>
<Product id="4444">
<ProductId>4444</ProductId>
</Product>
</Feed>'
SELECT feed.product.value('@id[1]', 'INT') AS productId
FROM @xmlWithNameSpace.nodes('declare namespace ns="gizmo"; /ns:Feed/ns:Product') feed(product)
UNION ALL
SELECT feed.product.value('ProductId[1]', 'INT') AS productId
FROM @xmlWithNameSpace.nodes('declare namespace ns="gizmo"; /ns:Feed/ns:Product') feed(product)
UNION ALL
SELECT feed.product.value('@id[1]', 'INT') AS productId
FROM @xmlWithoutNameSpace.nodes('/Feed/Product') feed(product)
UNION ALL
SELECT feed.product.value('ProductId[1]', 'INT') AS productId
FROM @xmlWithoutNameSpace.nodes('/Feed/Product') feed(product)
Ce retour
4444
NULL
4444
4444
Que dois-je faire le mal pour obtenir la valeur du nœud ProductId (4444) lorsque l'espace de noms est utilisé?
Merci d'avance pour toute indication.
La question de la partie supérieure fonctionne très bien, mais la partie inférieure (avec le mot-clé WITH) renvoie une erreur de syntaxe dans SQL-Server-2012 - Any ideas RP? – Hardryv
Essayez d'ajouter un point-virgule avant le WITH. J'espère que ça aide. –