sql-server-2005 – 寻求0x0B

前端之家收集整理的这篇文章主要介绍了sql-server-2005 – 寻求0x0B前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
sql列读取一些数据然后将其转换为 XML时出现此错误

“System.InvalidOperationException:XML文档中存在错误(182,16).—> System.Xml.XmlException:”,十六进制值0x0B,是无效字符.”

很公平,也许数据格式不正确.除了,我怎样才能找到罪魁祸首?

SELECT * from Mytable where Column like '%' + char(0x0B)+'%'

返回空.

(显然我尝试了所有%char,char,char%组合,以防万一)

解决方法

终于找到了!

.NET XML序列化程序在序列化时会转义无效字符,但是在反序列化之前它就是无法转义它.

因此,我必须搜索转义的& #xB以找到未转义的0x0B …严重的不是有趣的家伙!

所以这:

SELECT * from Mytable where Column like '%' + '&#xB' + '%'

实际上会发现这个:

<?xml version="1.0"?>
      <Hashtable><key>313_other_10</key><value>&#xB</value></Hashtable>

虽然这看起来像有效的XML,但在以下情况下会抛出无效的字符异常:

XmlSerializer xs = new XmlSerializer(Type.GetType(Hashtable));
    StringReader stringReader = new StringReader(xml);
    obj = xs.Deserialize(stringReader);

非常感谢那些积极参与帮助的人!这是无价的帮助!

猜你在找的MsSQL相关文章