Как избежать двойных кавычек в атрибутах в XML-строке в T-SQL?
Довольно простой вопрос - у меня есть атрибут, в котором я хотел бы иметь двойные кавычки. Как мне избежать их? Я пробовал
И я сделал переменную @xml как для xml-типа, так и для 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
Ответы
Ответ 1
Разве это не будет "
в 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)')
Ответ 2
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>"
Ответ 3
Больше не могу комментировать, но проголосовал за него и хотел, чтобы люди знали, что "
отлично работает для файлов конфигурации xml при формировании выражений регулярных выражений для RegexTransformer в Solr, например: regex=".*img src="(.*)".*"
с использованием экранированной версии вместо double- котировки.
Ответ 4
В Jelly.core для проверки литеральной строки нужно использовать:
<core:when test="${ name == 'ABC' }">
Но если мне нужно проверить строку "Игрушка R Us":
<core:when test="${ name == &quot;Toy's R Us&quot; }">
Это было бы так, если бы двойные кавычки были разрешены внутри:
<core:when test="${ name == "Toy R Us" }">