非常简单的问题 - 我有一个属性,我想要双引号。我如何逃避它们?我试过了
我已经为所有这些变量创建了@xml变量xml type和varchar(max)。
declare @xml xml --(or varchar(max) tried both)
set @xml = '<transaction><item value="hi "mom" lol"
ItemId="106" ItemType="2" instanceId="215923801" dataSetId="1" /></transaction>'
declare @xh int
exec sp_xml_preparedocument @xh OUTPUT, @xml
insert into @commits --I declare the table, just removed it for brevity
select
x.*
from openxml(@xh,'/transaction/item')
WITH (
dataItemId int,
dataItemType int,
instanceId int,
dataSetId int,
value varchar(max)
) x
答案 0 :(得分:270)
在xml中不是"
吗?即。
"hi "mom" lol"
**编辑:**测试;工作正常:
declare @xml xml
set @xml = '<transaction><item value="hi "mom" lol"
ItemId="106" ItemType="2" instanceId="215923801" dataSetId="1" /></transaction>'
select @xml.value('(//item/@value)[1]','varchar(50)')
答案 1 :(得分:4)
tSql使用另一个双引号转义双引号。因此,如果您希望它成为您的sql字符串文字的一部分,您可以这样做:
declare @xml xml
set @xml = "<transaction><item value=""hi"" /></transaction>"
如果要在xml本身的值中包含引号,则使用实体,如下所示:
declare @xml xml
set @xml = "<transaction><item value=""hi "mom" lol"" /></transaction>"
答案 2 :(得分:4)
不能发表评论但是已经投票了,并希望让人们知道"
在Solr中为RegexTransformer形成正则表达式时对xml配置文件非常有效:regex=".*img src="(.*)".*"
使用转义版本而不是双引号。
答案 3 :(得分:2)
在Jelly.core中测试文字字符串,可以使用:
<core:when test="${ name == 'ABC' }">
但如果我必须检查字符串“Toy's R Us”:
<core:when test="${ name == &quot;Toy's R Us&quot; }">
如果内部允许使用双引号,那就是这样的:
<core:when test="${ name == "Toy's R Us" }">