加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql-server-2005 – 寻求0x0B

发布时间:2021-03-14 13:13:27 所属栏目:编程 来源:网络整理
导读:从SQL列读取一些数据然后将其转换为 XML时出现此错误: “System.InvalidOperationException:XML文档中存在错误(182,16).— System.Xml.XmlException:”,十六进制值0x0B,是无效字符.” 很公平,也许数据格式不正确.除了,我怎样才能找到罪魁祸首? SELECT * f

从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);

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

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读