SQL Server 2008 XML 问题与 XML 转义字符



我们当前的销售点系统在嵌套事务中执行了太多查询,从而留下了重复或部分数据。我将整个事情更改为单个存储过程,其中所有销售项目数据都以 XML 形式传入,在临时表中迭代,并保存到数据库,然后提交。但是,SQL 拒绝 xml 中的特殊字符。

例如:

 <?xml version="1.0" encoding="utf-16"?>
 <list>
     <item>
         <objectid>bd99fcb6-3031-48b7-9a71-5f8cefe0a614</objectid>
         <amount>50.00</amount>
         <fee>1.50</fee>
         <waivedfee>0.00</waivedfee>
         <tax>0.00</tax>
         <name>TEST &amp; TEST PERSON</name>
         <payeeid>197</payeeid>
         <accountnumber>5398520352</accountnumber>
         <checknumber />
         <comedreceiptnumber />
         <isexpedited>0</isexpedited>
         <echeckrefnumber />
    </item>
</list>

失败。它告诉我&amp;所在的位置有一个非法角色。我不知道为什么。它被&amp;正确逃脱了.我在网上找不到任何解决方案,任何地方。到处都有人告诉我用&amp;替换和替换 - 这就是我正在做的事情!

使用 XML PATH('') ,它将为您编码特殊字符。

SELECT 'TEST & TEST PERSON' FOR XML PATH('')

我想通了。UTF-16 是正确的。那个 Xml 很好。还有最后一块xml,分类账,它只是普通的字符串,没有编码,也没有转义的特殊字符。一旦我纠正了一切,这一切都奏效了。

感谢您的帮助!

最新更新