Le stockage de caractère spécial(par exemple, &) dans le type de données XML
Si je ne
Declare @t table(Email xml)
Declare @email varchar(100) = 'xxx&[email protected]'
Insert into @t
select '<Emails> <Email>' + @email +'</Email></Emails>'
select * From @t
Je vais vous prévu d'erreur
Msg 9411, Niveau 16, État 1, Ligne 8
Analyse XML: ligne 1, le caractère 27, point-virgule attendue
Une solution que j'ai trouvé presque partout(y compris DONC) est à replace '&' with '&
et il fonctionne
Insert into @t
select CAST('<Emails><Email>' + REPLACE(@email, '&', '&') + '</Email></Emails>' AS XML)
Sortie
<Emails><Email>xxx&[email protected]</Email></Emails>
Cependant, j'ai essayé avec CData approche (juste une autre façon d'aborder le problème)
Declare @t table(Email xml)
Declare @email varchar(100) = 'xxx&[email protected]'
Insert into @t
Select CAST('<![CDATA[Emails> <Email>' + @email + '</Email> </Emails]]>' AS XML)
select * From @t
Quand j'ai eu le dessous de sortie
Emails> <Email>xxx&xx@monop.com</Email> </Emails
Ce que je suis en train de réaliser est de stocker les données comme il est c'est à dire la sortie désirée doit être
<Emails><Email>xxx&[email protected]</Email></Emails>
Est-il possible?
Je sais que la fonction remplacer échouera si un autre caractère spécial que xml ne parvient pas à comprendre sera passée comme une entrée à elle par exemple '<' i, auquel cas nous avons encore besoin de le remplacer...
Grâce
OriginalL'auteur | 2012-06-10
Vous devez vous connecter pour publier un commentaire.
Balises sont PCDATA, pas CDATA, afin de ne pas les mettre dans la section CDATA.
Pas de. Laisser les balises seul. Mettre seulement le texte dans une section CDATA.
Vous aurez besoin de balises, comme bien sûr. Mais ils vont hors la section CDATA.
Votre sortie désirée est pas valide de toute façon, alors...
C'est comme demander pourquoi nous ne pouvons pas utiliser les périodes de la fin de chaque mot. Parce qu'il est utilisé pour d'autres choses. C'est pourquoi nous l'encoder.
OriginalL'auteur Ignacio Vazquez-Abrams
Lorsque vous travaillez avec des fichiers XML, vous devez utiliser XML les fonctionnalités de SQL Server.
Par exemple:
Bonne chance
Romain
OriginalL'auteur Roman Tumaykin