【问题标题】:TSQL Send XML with special charsTSQL 发送带有特殊字符的 XML
【发布时间】:2014-10-30 18:29:39
【问题描述】:

我有一个简单的页面,它创建一个 XML 搜索数据字符串并将其发送到我的存储过程。从那里,我解析它并做我需要做的任何事情。

问题是,我传递的值之一可能包含 ampersand (&) 符号。

这是我的 XML 示例:

<root>
   <locations>
      <location>
         <selectedLocation>Chandler</selectedLocation>
      </location>
   </locations>
   <areas>
      <area>
         <selectedArea>Customer Solutions</selectedArea>
      </area>
   </areas>
   <departments>
      <department>
         <selectedDepartment>Settings & Payments's</selectedDepartment>
      </department>
   </departments>
   <source />
</root>

我怎样才能让它正确传递,因为&amp; 会导致它的有效性问题。

我正在做一些研究,我相信CDATA 仅用于相反的情况;从数据库中提取。

对如何正确通过有什么想法吗?

【问题讨论】:

    标签: xml tsql stored-procedures


    【解决方案1】:

    您需要像这样转义与符号&amp;amp;&amp;amp;

    【讨论】:

      【解决方案2】:

      我们base64我们的字符串

      -- Encode the string "Settings & Payments's " in Base64 to get "U2V0dGluZ3MgJiBQYXltZW50cydz"
      SELECT Base64Encoding = CAST(N'' AS XML).value('xs:base64Binary(xs:hexBinary(sql:column("bin")))', 'VARCHAR(MAX)')
      FROM (
          SELECT bin = CAST('Settings & Payments''s' AS VARBINARY(MAX))
          ) AS bin_sql_server_temp;
      
      -- Decode the Base64-encoded string "U2V0dGluZ3MgJiBQYXltZW50cydz=" to get back "Settings & Payments's"
      SELECT 
          CAST(
              CAST(N'' AS XML).value(
                  'xs:base64Binary("U2V0dGluZ3MgJiBQYXltZW50cydz")'
                , 'VARBINARY(MAX)'
              ) 
              AS VARCHAR(MAX)
          )   ASCIIEncoding
      ;
      

      那么你的xml看起来像

      <root>
         <locations>
            <location>
               <selectedLocation>Chandler</selectedLocation>
            </location>
         </locations>
         <areas>
            <area>
               <selectedArea>Customer Solutions</selectedArea>
            </area>
         </areas>
         <departments>
            <department>
               <selectedDepartment>U2V0dGluZ3MgJiBQYXltZW50cydz</selectedDepartment>
            </department>
         </departments>
         <source />
      </root>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-21
        • 1970-01-01
        • 1970-01-01
        • 2015-05-28
        • 1970-01-01
        • 1970-01-01
        • 2016-08-23
        • 2012-12-23
        相关资源
        最近更新 更多