从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 '%' + '' + '%'
实际上会发现这个:
<?xml version="1.0"?> <Hashtable><key>313_other_10</key><value></value></Hashtable>
虽然这看起来像有效的XML,但在以下情况下会抛出无效的字符异常:
XmlSerializer xs = new XmlSerializer(Type.GetType(Hashtable)); StringReader stringReader = new StringReader(xml); obj = xs.Deserialize(stringReader);
非常感谢那些积极参与帮助的人!这是无价的帮助!