自从我们的项目数据层从读取数据库改为读取接口服务后,经常会出现一些类似于

的错误。我们的数据结构如下所示

->,C#为正则表达式提供了强大的支持,本课程重点讲述在C#环境下使用正则表达式,并能够学会分析创建属于自己的正则表达式,学习正则表达式请访问http://edu.51cto.com/course/course_id-4664.html]]>

接口数据

在用户输入的数据中常常有一些小人箭头之类的特殊符号(由于在www.cnblogs.com/xietong下不支持这些特殊符号,所以读者在我举例的数据结构中看不到这些特殊符号),我曾经尝试匹配这些特殊字符,然而未能找到与之相匹配的unicode代码区块,所以采用了匹配正常字符的方式来获取合法的数据用于xml解析。可以看到我们数据中的字符包括字母数字、各种标点、空白符,据此可以写出我们的正则表达式"(\w|\p{P}|\s)*"。在RegxTest下测试发现无法匹配“<>=”这些符号,加上这些符号后正则表达式为"(\w|\p{P}|[<>=]|\s)*",经测试,发现可以获取到所有正常的字符,在c#中代码如下:

string content = sb.ToString();

MatchCollection matches = Regex.Matches(content, @"(\w|\p{P}|[<>=]|\s)*");

sb = new StringBuilder();

foreach (Match m in matches)

{

sb.Append(m.Value);

}

content = sb.ToString();

在运行之后发现类似异常虽然少了很多,但还是有一部分异常,查看这些异常发现造成这些异常的原因正是存在16进制的字符,数据如下:

如果直接将0x式样的16进制去掉,那么这些图片就无法找到正确地址,似乎有些粗鲁。为此,我决定将相应的变量先取出来,然后在读取出来的DataSet中重新对相应字段赋值。我的代码如下:

MatchCollection imatches = null;

if (Regex.IsMatch(content, "0x[0-9a-fA-F]+", RegexOptions.IgnoreCase))

{

Regex regex = new Regex(@"\k'tag'>");

imatches = regex.Matches(content);

if (imatches != null)

{

content = regex.Replace(content, "${tag}>");

}

}

System.Xml.XmlDocument xd = new System.Xml.XmlDocument();

xd.LoadXml(content);

System.Xml.XmlNodeReader xnr = new System.Xml.XmlNodeReader(xd);

ds.ReadXml(xnr);

xnr.Close();

if (imatches != null && imatches.Count > && ds != null && ds.Tables.Count > )

{

foreach (Match m in imatches)

{

foreach (DataTable table in ds.Tables)

{

if (table.Columns.Contains(m.Groups["tag"].Value))

{

table.Rows[][m.Groups["tag"].Value] = m.Groups["text"].Value;

break;

}

}

}

}

在上面的代码中用到了正则的文本替换及分租,如果有不理解的地方可以在http://edu.51cto.com/course/course_id-4664.html中学习一下基本的C#正则表达式知识。

上面的代码经测试可以正常运行,但放到那里呢,虽然在try-catch抛出异常,在异常中处理的话要耗费几百个时钟周期,但鉴于问题数据只是一小部分,并且上面的正则表达式的效率并不太高,所以我将上面的代码放在了catch语句块中。

&lbrack;No0000133&rsqb;c&num; ERROR&colon;&OpenCurlyDoubleQuote;&period;”&lpar;十六进制值 0x00&rpar;是无效的字符

December 24, 2013 c# exception “.”(十六进制值 0x00)是无效的字符. 解决方法:常见于socket方式连接(包括HTTP方式)等.报文交互时候,对方会在字符串后面 ...

调用webservice接口,报错:&lpar;十六进制值0x01&rpar;是无效的字符

#事故现场 调用webservice接口,报错:(十六进制值0x01)是无效的字符. 如图: 意思是webservice返回的信息中包含无效的字符,无法解析成xml: #分析 使用postman向we ...

SSRS 在订阅的时候,在头值中找到无效的字符。将不重新发送邮件

在头值中找到无效的字符.将不重新发送邮件 SSRS 在订阅的时候,在头值中找到无效的字符.将不重新发送邮件! 查看了一下,只要是发送文件类型的都不可以,改成HTML的就可以.然后重新把RS的报表文件友 ...

XML 十六进制值 是无效的字符错误 解决方法之一 转

/// /// 过滤非打印字符 /// /// 待过滤

C&num;十六进制值0x12&comma;是一个无效字符 - 程序园

原文:C#十六进制值0x12,是一个无效字符 - 程序园 我正在加载很多xml文档,其中一些返回错误,如“十六进制值0x12,是无效字符”,并且有不同的字符.如何删除它们?   我在这里做了一个小的研 ...

MySql&lowbar;十六进制值

十六进制值 MySQL支持十六进制值.在数字上下文中,十六进制数如同整数(64位精度).在字符串上下文,如同二进制字符串,每对十六进制数字被转换为一个字符: mysql> SELECT x'4D ...

CSS:CSS 颜色十六进制值

ylbtech-CSS:CSS 颜色十六进制值 1.返回顶部 1. 根据十六进制值排序 所有浏览器都支持的颜色名 根据颜色名排序的相同列表 颜色名 十六进制颜色值 颜色 Black #000000   ...

thinkphp事务处理以及无效时的解决方案(整理)

thinkphp事务处理以及无效时的解决方案(整理) 一.总结 一句话总结:要程序里面支持事务,首先连接的数据库和数据表必须支持事务 mysql 1.InnoDB和MyISAM对事务的支持怎么样? I ...

随机推荐

IOSGCD

http://blog.csdn.net/duxinfeng2010/article/details/8958681/ http://kyfxbl.iteye.com/blog/1997516

Linux 系统下查看硬件信息命令大全

有许多命令可以用来查看 Linux 系统上的硬件信息.有些命令只能够打印出像 CPU 和内存这一特定的硬件组件信息,另外一些命令可以查看多种硬件组件的信息. 这个教程可以带大家快速了解一下查看各种硬件 ...

利用jQuery打造个性网站

网页结构 编写全局样式(reset.css) /*全局样式*/ body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fi ...

&lbrack;Noi2016&rsqb;国王饮水记

来自FallDream的博客,未经允许,请勿转载,谢谢. 跳蚤国有 n 个城市,伟大的跳蚤国王居住在跳蚤国首都中,即 1 号城市中.跳蚤国最大的问题就是饮水问题,由于首都中居住的跳蚤实在太多,跳蚤国王 ...

谈谈JAVA中的安全发布

谈谈JAVA中的安全发布 昨天看到一篇文章阐述技术类资料的"等级",看完之后很有共鸣.再加上最近在工作中越发觉得线程安全性的重要性和难以捉摸,又掏出了

接前一篇:new select option保存搜索条件

WD_SELECT_OPTIONS_20新加了很多好玩的东西,尤其是里面的保存搜索条件和使用保存的搜索条件.因为这个比较想WEB UI,所以兴趣比较高一点,WEB UI里是把参数拼成XML存起来的,我 ...

【搬运】 Page Object 官方文档 (新增了Widget特性)

Appium Java client has facilities which components to [Page Object](https://github.com/SeleniumHQ/se ...

&lbrack;c&sol;c&plus;&plus;&rsqb; programming之路(12)、循环结构

一.求2n #include void main(){ ; ; while(n--){ s*=; printf("%d,%d\n",s,n); } g ...

TypeScript 之 模块

https://m.runoob.com/manual/gitbook/TypeScript/_book/doc/handbook/Modules.html 外部模块简写 外部模块简写:declare ...

作业 20181204-5 Final阶段贡献分配规则及实施

此作业要求参见:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2479] 小组介绍 组长:付佳 组员:张俊余 李文涛 孙赛佳 田良 于洋 ...

java十六进制0xaa_“.”(十六进制值 0x00)是无效的字符解决方案相关推荐

  1. 关于(十六进制值 0x00)是无效的字符

    终于把自已恶搞一把,平时图省劲用山寨客户端向服务器提交数据,数据编码一直有问题.鄙人负责服务器的WCF接口开发,于是有一天测试WCF时填了自己的用户名,接下来报错 (十六进制值 0x00)是无效的字符 ...

  2. NuGet.Config 不是有效的 XML。路径十六进制值 0x00)是无效

    Vs2017打开ABP Zero core 项目报错,报错信息如下: NuGet配置不是有效的XML.:'C:\Users\Administrator\AppData\Roaming\NuGet\Nu ...

  3. 调用webservice接口,报错:(十六进制值0x01)是无效的字符。

    文章目录 #事故现场 #分析 #解决方法 #事故现场 调用webservice接口,报错:(十六进制值0x01)是无效的字符. 如图: 意思是webservice返回的信息中包含无效的字符,无法解析成 ...

  4. 解析PPTX 遇到异常:“\b”(十六进制值 0x08)是无效的字符。

    问题描述: 通过DocumentFormat.OpenXml解析PPTX文件时遇到异常:"\b"(十六进制值 0x08)是无效的字符,查看文件发现存在乱码,乱码的十六进制值刚好时异 ...

  5. “\u0001”(十六进制值 0x01)是无效的字符

    用XDocument解析XML时个别文件报字符无效错误. 有种思路是替换无效的字符. 最简单的方法当然是忽略无效字符,具体操作如下 XDocument xDocument = null; XmlRea ...

  6. {在头值中找到无效的字符。} 发email的时候 遇到这个问题 老师解决

  7. java实型常量用十六进制表示_[Java入门笔记] Java语言基础(二):常量、变量与数据类型...

    常量与变量 什么是常量和变量 常量与变量都是程序在运行时用来存储数据一块内存空间 常量: 常量的值在程序运行时不能被改变,Java中声明常量必须使用final关键字.常量还可以分为两种意思: 第1种意 ...

  8. JAVA十进制与十六进制相互转换

    JAVA十进制与十六进制相互转换 十进制转十六进制 String.format("%08x", 645741568); 十六进制转十进制 Long.parseLong(" ...

  9. java中带符号十六进制转换成十进制详解

    java中带符号十六进制转换成十进制详解 代码如下 代码如下 必须拿ffff进行测试,否则测不出异同 public void test1(){String strHex="ffff" ...

最新文章

  1. get占位符传多个参数_未知环境下的Lidar概率占位栅格图(Occupancy Grid Map) Python代码实现...
  2. android 自定义天气特效,《Android自定义控件》WindMillView,仿华为天气风车效果
  3. Sencha Architect 安装与使用
  4. 螺旋矩阵Python解法
  5. oracle中sql行数的计算,Oracle技术网—如何利用DBMS_SQL包和游标计算当前用户下所有表的行数...
  6. 这些新技术你们都知道吗?成功收获美团,小米安卓offer
  7. Neither BindingResult nor plain target object for bean name 'xxx' availabl问题解决
  8. u-boot2010.06移植阶段三--norflash驱动
  9. 精简的Linux启动过程
  10. Property Bags Object Model中的小“陷阱”
  11. window7安装虚拟机上网
  12. 谷歌地球(google earth)中文专业版官方下载
  13. java实现图片合成功能,两张图片合成一张
  14. python绘制国际象棋规则口诀_国际象棋摆棋口诀
  15. 7.sqli-labs-Less7
  16. Java中存储金额用什么数据类型?
  17. html文本怎么打印出来,如何把一个html文件直接打印出来(200分)
  18. matlab画图总结——二维图plot函数、图形标注和坐标轴控制、饼图、条形图、排列图;三维图的绘制
  19. linux-vimdiff,diff,patch,cmp:文件比较
  20. Word标题设置快捷键

热门文章

  1. vmware虚拟机黑屏问题
  2. HTML+CSS网页设计制作大作业
  3. js 左右箭头实现图片或div内容切换
  4. MSYQL ORDER BY按拼音首字母排序
  5. 微信公众平台开发(PHP)(七) 聊天机器人功能开发
  6. 励志篇--扬帆破浪!!
  7. linux 查看端口号命令
  8. python散点图重叠_通过增加figure siz避免python散点图中的重叠点
  9. linux网络全景指南
  10. SQL Server 2008中的分区表(二),张孝祥java基础在线视频教程