如何在SQL 2005上使用FOR XML PATH时保留与号(&)
技术问答
473 人阅读
|
0 人回复
|
2023-09-14
|
是否有任何技巧可防止SQL Server诱使像&,这样的字符?我正在尝试在XML文件中输出URL,但是SQL希望将所有’&’替换为’ &‘6 s! J3 \& A$ L4 a. B
进行以下查询:" e# `/ ^% ]4 D
SELECT 'http://foosite.com/' + RTRIM(li.imageStore)
6 _- P& k8 o" J5 A$ @ z0 j + '/ImageStore.dll?id=' + RTRIM(li.imageID)
$ T/ \' C. T; ? + '&raw=1&rev=' + RTRIM(li.imageVersion) AS imageUrl" {# x9 K# g5 D Z% Y
FROM ListingImages li
- {& Y) h" Z7 e9 @FOR XML PATH ('image'), ROOT ('images'), TYPE
, }( }5 t4 ^0 f; ^2 u9 L& |5 I我得到的输出是这样的(&s已被entented):+ y' N* q @$ x
& k+ Y, @/ l* f7 y; e, e
8 |' B% O% @3 F8 C
http://foosite.com/pics4/ImageStore.dll?id=7E92BA08829F6847&raw=1&rev=0
: n; \1 S- z. a1 k/ {( h4 H
) | y- e6 ]% I3 D! @! W- I0 x$ p& P/ O2 m8 \( I4 [! q# Z
我想要的是这个(&s没有被entented):* Q+ J I4 d# V' _
/ Y0 P% H, f: s# e+ Q4 N0 S 7 Q6 o/ f/ d. F! B: h! q |
http://foosite.com/pics4/ImageStore.dll?id=7E92BA08829F6847&raw=1&rev=0
/ F1 |4 @9 O( G3 }' |
( K# c& H3 x) f; I4 j# [, U( N7 S5 m
如何防止SQL Server将’&’转换为’ &‘?! M2 L! H! }: x+ D7 e; W
% W2 l v" ~, l8 Z7 C( j解决方案:
/ j' U6 {8 P. z# r
% y7 @, S7 V7 i/ [" A" k
+ K0 ?- t) f/ m* u, I ~! r
, b( L) h S5 v SQL
, o a0 o4 v! [# hServer生成的内容正确。您期望看到的不是格式正确的XML。原因是&字符表示实体引用的开始,例如&。有关更多信息,请参见XML规范。
5 j+ t+ C$ J: i: g当您的XML解析器从XML解析此字符串时,它将理解&实体引用并以所需的形式返回文本。因此,除非您使用错误的XML解析器或尝试手动解析它,否则XML文件中的内部格式不会给您造成问题(在这种情况下,当前的解析器代码目前相对于XML而言实际上是错误的)规格)。 |
|
|
|
|
|