[xml] T-SQL에서 XML 문자열의 특성에서 큰 따옴표를 어떻게 이스케이프 처리합니까?

아주 간단한 질문-큰 따옴표로 묶고 싶은 속성이 있습니다. 어떻게 이스케이프 처리합니까? 난 노력 했어

  • \ “
  • “”
  • \\ “

그리고 @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



답변

하지 않을까요 것을 &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)')


답변

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>"


답변

더 이상 주석을 달 수는 없지만 투표하고 &quot;Solr에서 RegexTransformer에 대한 정규 표현식을 형성 할 때 XML 구성 파일에 매우 효과적 이라는 것을 사람들에게 알리고 싶습니다 regex=".*img src=&quot;(.*)&quot;.*". 큰 따옴표 대신 이스케이프 된 버전을 사용하십시오.


답변

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; 


답변