如何在SQL 2005上使用FOR XML PATH时保留与号(&)
技术问答
433 人阅读
|
0 人回复
|
2023-09-14
|
是否有任何技巧可防止SQL Server诱使像&,这样的字符?我正在尝试在XML文件中输出URL,但是SQL希望将所有’&’替换为’ &‘+ Y; \$ I! b9 g/ H
进行以下查询:
. {% e3 I. Y; M6 ^0 f% bSELECT 'http://foosite.com/' + RTRIM(li.imageStore)
7 h5 ]0 G( _' ]# m# V + '/ImageStore.dll?id=' + RTRIM(li.imageID)8 L" b" ? z) i* h& a% ]2 t
+ '&raw=1&rev=' + RTRIM(li.imageVersion) AS imageUrl& o: a, K- O* i6 d# \
FROM ListingImages li1 F6 l' {3 ~4 s6 `
FOR XML PATH ('image'), ROOT ('images'), TYPE$ ? `5 |5 V. q$ N* X
我得到的输出是这样的(&s已被entented):% {/ A5 D: C6 I/ ~- w
4 k* V8 s! r. j# m* G
: J7 `' L, a) b7 Y8 k/ U
http://foosite.com/pics4/ImageStore.dll?id=7E92BA08829F6847&raw=1&rev=0
% U5 w S5 I8 o. C; V6 G $ b* Y, `$ @4 }2 b
/ W' N9 h) H- O我想要的是这个(&s没有被entented):! T5 ^5 y5 H4 l/ ^& E l) F0 A
. K$ @" f: s/ D! d3 q 0 }+ o+ H1 `( @2 |
http://foosite.com/pics4/ImageStore.dll?id=7E92BA08829F6847&raw=1&rev=0
G* s! E8 @' x- w* J2 x- _ 7 H& v0 B9 {9 v+ ~0 p) L
7 ]+ U- \ N# C, S" q如何防止SQL Server将’&’转换为’ &‘?
, k/ Z' k8 H3 I" G$ a8 D ! h% ?3 N3 g+ k3 l! }; {- _
解决方案:, ^4 t% I0 W# X( R" S9 Y
8 g0 m9 D$ Q; f6 F
R1 i8 k, Q& h( Z3 d* _6 r1 d) M# l
SQL
( I! n6 e F9 x" Z% cServer生成的内容正确。您期望看到的不是格式正确的XML。原因是&字符表示实体引用的开始,例如&。有关更多信息,请参见XML规范。, ]% Q% y5 Z/ v6 M1 B2 |2 m
当您的XML解析器从XML解析此字符串时,它将理解&实体引用并以所需的形式返回文本。因此,除非您使用错误的XML解析器或尝试手动解析它,否则XML文件中的内部格式不会给您造成问题(在这种情况下,当前的解析器代码目前相对于XML而言实际上是错误的)规格)。 |
|
|
|
|
|