programing

T-SQL의 XML 문자열에서 속성의 큰따옴표를 피하려면 어떻게 해야 합니까?

javamemo 2023. 9. 12. 19:47
반응형

T-SQL의 XML 문자열에서 속성의 큰따옴표를 피하려면 어떻게 해야 합니까?

아주 간단한 질문입니다. 저는 큰따옴표를 달고 싶은 속성이 있습니다.어떻게 탈출하죠?노력했습니다.

  • \"
  • ""
  • \\"

그리고 이들 모두에 대해 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

그렇지 않습니까?&quot;xml로? 즉.

"hi &quot;mom&quot; lol" 

**edit: ** 테스트 완료, 정상 작동:

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 string 리터럴의 일부가 되기를 원한다면 이렇게 해야 합니다.

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에 대한 regex 식을 구성할 때 xml config 파일에 대해 매우 잘 작동합니다.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; 

언급URL : https://stackoverflow.com/questions/650821/how-do-i-escape-double-quotes-in-attributes-in-an-xml-string-in-t-sql

반응형