174

非常に簡単な質問-二重引用符を入れたい属性があります。それらをエスケープするにはどうすればよいですか?私はもう試した

  • \ "
  • ""
  • \\"

そして、それらすべてに対して、@ 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
4

4 に答える 4

273

&quot;それはxmlにありませんか?すなわち

"hi &quot;mom&quot; lol" 

**編集:**テスト済み; 正常に動作します:

declare @xml xml

 set @xml = '<transaction><item value="hi &quot;mom&quot; lol" 
    ItemId="106"  ItemType="2"  instanceId="215923801"  dataSetId="1" /></transaction>'

select @xml.value('(//item/@value)[1]','varchar(50)')
于 2009-03-16T15:10:12.037 に答える
4

&quot;これ以上コメントすることはできませんが、投票して、Solr で RegexTransformer の正規表現を形成するときに、xml 構成ファイルで非常にうまく機能することを人々に知らせたいと思いました:regex=".*img src=&quot;(.*)&quot;.*"二重引用符の代わりにエスケープされたバージョンを使用します。

于 2011-09-14T19:52:41.497 に答える
4

tSql は、二重引用符を別の二重引用符でエスケープします。したがって、それを SQL 文字列リテラルの一部にしたい場合は、次のようにします。

declare @xml xml 
set @xml = "<transaction><item value=""hi"" /></transaction>"

xml 自体の値の中に引用符を含めたい場合は、次のようなエンティティを使用します。

declare @xml xml
set @xml = "<transaction><item value=""hi &quot;mom&quot; lol"" /></transaction>"
于 2009-03-16T15:14:37.363 に答える
2

Jelly.core でリテラル文字列をテストするには、次を使用します。

&lt;core:when test="${ name == 'ABC' }"&gt; 

しかし、文字列 "Toy's R Us" をチェックする必要がある場合:

&lt;core:when test="${ name == &amp;quot;Toy&apos;s R Us&amp;quot; }"&gt;

内部で二重引用符が許可されている場合、次のようになります。

&lt;core:when test="${ name == "Toy's R Us" }"&gt; 
于 2010-11-18T19:54:48.687 に答える