非常に簡単な質問-二重引用符を入れたい属性があります。どうすればそれらをエスケープできますか?私はもう試した
そして、すべてのXMLタイプとvarchar(max)の両方で@xml変数を作成しました。
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
それは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)')
tSqlは、二重引用符を別の二重引用符でエスケープします。したがって、SQL文字列リテラルの一部にしたい場合は、次のようにします。
declare @xml xml
set @xml = "<transaction><item value=""hi"" /></transaction>"
Xml自体のvalue内に引用符を含める場合は、次のようなエンティティを使用します。
declare @xml xml
set @xml = "<transaction><item value=""hi "mom" lol"" /></transaction>"
もうコメントすることはできませんが、賛成票を投じ、SolrでRegexTransformerの正規表現を作成するときに、"
がxml構成ファイルで非常にうまく機能することを人々に知らせたいと思いました:二重引用符の代わりにエスケープバージョンを使用するregex=".*img src="(.*)".*"
.
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" }">