控制字符的XML解析错误:非法的xml字符

时间:2015-12-26 05:58:50

标签: sql xml sql-server-2008 c#-4.0 xml-serialization

我正在处理API调用并检索xml,如下所述。

<?xml version="1.0" encoding="utf-16"?>
<backlinks>
<asd><Click Here for &#x3; tips to help you get around></asd>
<sourcetitle>《新加坡》住宿@戴斯旅店 Days Hotel Singapore-歡遊世界</sourcetitle>
</backlinks>

我正在使用SQL Server 2008,我的数据库表中有一个xml列,我希望在其中存储此值。

我尝试使用CDATA,它适用于&#x3;以及正常工作如果我从整个提到的xml的xml字符串中删除编码。但是当我尝试检索xml时,它会显示为这样。

<backlinks>
<asd>Click Here for &amp;#x3; tips to help you get around</asd>
<sourcetitle>«???»??@???? Days Hotel Singapore-????</sourcetitle>
</backlinks>

我想要输入的确切输出作为输入。

提前谢谢大家。

1 个答案:

答案 0 :(得分:1)

确保将列或值强制转换为nvarchar。 没有N的选择:

SELECT 
'<?xml version="1.0" encoding="utf-16"?>
<backlinks>
<asd><Click Here for &#x3; tips to help you get around></asd>
<sourcetitle>《新加坡》住宿@戴斯旅店 Days Hotel Singapore-歡遊世界</sourcetitle>
</backlinks>'

返回:

<?xml version="1.0" encoding="utf-16"?>  <backlinks>  <asd><Click Here for &#x3; tips to help you get around></asd>  <sourcetitle>**«???»??@????** Days Hotel Singapore-????</sourcetitle>  </backlinks>

使用N进行SELECT:

SELECT 
N'<?xml version="1.0" encoding="utf-16"?>
<backlinks>
<asd><Click Here for &#x3; tips to help you get around></asd>
<sourcetitle>《新加坡》住宿@戴斯旅店 Days Hotel Singapore-歡遊世界</sourcetitle>
</backlinks>'

返回:

<?xml version="1.0" encoding="utf-16"?>  <backlinks>  <asd><Click Here for &#x3; tips to help you get around></asd>  <sourcetitle>《新加坡》住宿@戴斯旅店 Days Hotel Singapore-歡遊世界</sourcetitle>  </backlinks>
相关问题