J'ai une table appelée XML (dans SQL Server 2008) et il dispose d'un champ appelé Voici comment mon XML ressemble à p> ma requête p> quand j'exécute cette requête dans l'analyseur de requête Je vois le message "1 rangée (s) affecté (s)" mais en réalité, l'attribut XMLNS de clue_personal_auto n'est pas enlevé. Une idée de ce que je fais mal. P> merci
BB P> P> xmldocument code> de type
xml code>. J'essaie de supprimer un attribut d'une variable XML.
3 Réponses :
Vous devez utiliser avec xmlnamespaces , sinon "/ clue_personal_auto" Ne correspond pas à la liste de noms Non seulement cela, vous ne pouvez pas réellement supprimer un espace de noms car il n'est pas un attribut normal. P> Exemple de suppression d'un attribut régulier p> clue_personal_auto xmlns = "..." code> noeud.
Je n'arrive pas à trouver un moyen facile de le faire - mais la vraie question reste: au lieu de mettre beaucoup d'efforts à vous en débarrasser - En savoir plus sur les espaces de noms XML et commencer à les utiliser! p> Vous pouvez utiliser très facilement cet espace de noms XML dans vos requêtes: p> et être heureux avec elle - pas besoin de supprimer artificiellement avec xmlnamespaces ... code> construct, vous pouvez facilement utiliser les espaces de noms.
xmlns = code> déclarations plus! p> p>
L'une des raisons de se débarrasser des espaces de nom est quand ils brisent beaucoup de code hérité qui n'a jamais eu auparavant travailler avec eux. Dans mon application, les espaces de noms ne servent aucun but (autre que de faire fonctionner les commandes XPath existantes).
UPDATE XML SET CONVERT(XML, REPLACE(CONVERT(NVARCHAR(MAX), XmlDocument), N' xmlns=...')) WHERE ID = 357
Nice - force brute mais efficace!
(1 ligne affectée) signifie simplement que vous avez effectué une mise à jour. S'il y avait une colonne d'horodatage, cela aurait changé. Juste comme
update tbl Set ID = ID code> réussit également, mais ne fait rien
NOTEZ THA SQL-SERVEUR Fonction
.Modify () CODE> Utilisez un fournisseur Langue de modification de données XML