博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XML 文件解析--含Unicode字符的XML文件
阅读量:6213 次
发布时间:2019-06-21

本文共 1594 字,大约阅读时间需要 5 分钟。

hot3.png

         在最近的工作中需要使用XML文件做数据存储,由于此XML文件的内容是不同的数据来源的数据,在解析XML文件时,遇到几处相似的异常:无效的XML字符 (Unicode: 0x9e)。 (Unicode: 0x8b)。

        Exception in thread "main" org.xml.sax.SAXParseException; lineNumber: 24; columnNumber: 180; 在文档的元素内容中找到无效的 XML 字符 (Unicode: 0x9e)。

at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)

at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)

at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)

at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)

at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source)

...

        

        一开始,试图对XML文件进行不同格式的修改,UTF-8,ANBI等等,均无效(后来明白过来了,字符值根本没有改变), 接着去寻找解决办法,试图把Unicode转变为UTF-8,也找了相关的算法,但是XML中仅仅含有几处Unicode字符,也没能解决。

        后来找了一些资料发现这些字符有些共性:这些无效的字符在一些文档中作为文档处理器的控制编码(微软选择了那些再0x82到0x95之间的字符作为"smart"标点),这些也被Unicode保留作为控制编码的,并且在XML中是不合法的。

        

        在下面的网页中有所有的Unicode字符,对应的UTF-8字符,以及它代表的意义

        http://www.utf8-chartable.de/unicode-utf8-table.pl?utf8=0x 

        最后我还是把这些无效的Unicode字符转变为空字符(Scala代码)

    def UnicodeStringHandler(value:String) = {    	val chs = value.toArray        for(i <- 0 until value.length()) {          if (chs(i) > 0xFFFD)            {            chs(i) = ' ';            }             else if (chs(i) < 0x20 && chs(i) != '\t' & chs(i) != '\n' & chs(i) != '\r')            {             chs(i) = ' ';            }            else if(chs(i) >= 0x80 && chs(i) <= 0x9f){               chs(i) = ' ';            }        }        new String(chs);    }

    

转载于:https://my.oschina.net/devjing/blog/335425

你可能感兴趣的文章
Java逐行输出N*N螺旋矩阵,要求最小空间复杂度
查看>>
Java多线程 - 线程 和 任务
查看>>
关于MVC框架的学习
查看>>
ubuntu12.04下hadoop单机模式和伪分布模式环境搭建
查看>>
Spark之RDD持久化、广播、累加器
查看>>
业务系统获取来源IP的正确姿势
查看>>
Nginx配置文件nginx.conf中文详解
查看>>
javascript操作DOM
查看>>
Hadoop环境配置
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
spring的事务管理
查看>>
重构是必须滴
查看>>
iostat查看io使用率
查看>>
AnyChat在打开音频设备的同时会自动发布视频数据吗
查看>>
视频对讲技术 大厅好友解决方案
查看>>
Apache+MariaDB+PHP架构的编译安装
查看>>
Linux磁盘分区UUID的获取及其UUID的作用
查看>>
1. gzip, bzip2 能否直接压缩目录呢?
查看>>
JAVA-WEB
查看>>