`
ainidehsj
  • 浏览: 134765 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

含Unicode字符XML文件解决

阅读更多
解析XML出现如下异常:
An invalid XML character (Unicode: 0x2) was found in the element content of the document. Nested exception: An invalid XML character (Unicode: 0x2) was found in the element content of the document.

下面写了个小程序,可以对异常xml文件或目录下所有xml文件进行处理,


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;


public class UnicodeClear {

    /**
     * 对指定的参数内容,如果存在Unicode字符,则替换为空格
     * @param value
     * @return
     */
    private String UnicodeStringHandler(String value) 
    {
    if(value==null) return null;
    
    char[] chs = value.toCharArray();
    
        for (int i=0; i < value.length(); ++i) {
            if (chs[i] > 0xFFFD)
            {
            chs[i] = ' ';
            } 
            else if (chs[i] < 0x20 && chs[i] != '\t' & chs[i] != '\n' & chs[i] != '\r')
            {
            chs[i] = ' ';
            }
        }
        return new String(chs);
    }
    
    /**
     * 处理包含Unicode字符的文件
     * @param f
     * @throws Exception
     */
private void handlerFile(File f) throws Exception
{
if(f.exists())
{
System.out.println("开始处理文件:"+f.getName());
File rs_f = new File(f.getParent(),f.getName()+".tmp");
java.io.BufferedReader br = null;
java.io.BufferedWriter bw = null;
try {
br = new BufferedReader(new InputStreamReader(
new FileInputStream(f), "utf-8"));
bw = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(rs_f), "utf-8"));
String str;
while((str=br.readLine())!=null)
{
String value = UnicodeStringHandler(str);
bw.write(value);
}
} catch (Exception e) {
System.out.println("err:"+e.getMessage());
throw e;
}
finally{
if(br!=null) br.close();
bw.close();
}
f.delete();
rs_f.renameTo(f);
}
}
public boolean scanning(String fname)
{
File f = new File(fname);

try {
if(!f.exists())
{
System.out.println("路径不存在:"+fname);
return true;
}
if(f.isFile())
{
handlerFile(f);
}
else
{
File[] fs = f.listFiles(new FileFilter() {
public boolean accept(File pathname) {
String fname  = pathname.getName();
if(fname.toUpperCase().lastIndexOf(".XML")==-1) return false;
String suffix = fname.substring(fname.lastIndexOf("."), fname.length());
return suffix.equalsIgnoreCase(".XML");
}
});
for(File fc : fs)
{
handlerFile(fc);
}
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}

/**
* @param args
*/
public static void main(String[] args) {
if(args==null || args.length==0){
System.out.println("请输入要进行处理的文件路径...");
return ; 
}
String fname = args[0];
UnicodeClear ucClear = new UnicodeClear();
ucClear.scanning(fname);
System.out.println("结束");
}
}
分享到:
评论

相关推荐

    让开源项目TinyXml支持Unicode(wchar_t)

    3. TinyXml函数提供的Xml内容解析功能,不支持内容以UTF16编码和UTF32编码的Xml字符串,也即`Unicode编码`。 4. UTF8编码是Unicode编码的一种实现方式,以不定个数的字节来存储一个Unicode码值,支持多国语言文字...

    《XML实用大全》电子文档

    7.4 Unicode字符集 7.5 如何使用Unicode编写XML 7.6 本章小结 第8章 文档类型定义和合法性 8.1 文档类型定义 8.2 文档类型声明 8.3 根据DTD的合法性检验 8.4 列出元素 8.5 元素声明 8.6 DTD中的...

    ucf:Unicode字符查找器

    为了从您自己的Web服务器(或本地磁盘)提供此软件的副本,克隆git存储库后,您将需要运行make-data-file脚本,该脚本将从Unicode.org下载XML Unicode字符数据库文件。并生成一个更小的摘要数据文件。 在运行生成...

    VC使用Cmarkup生成、解析xml资料

    UNICODE(统一字符编码标准):对于WindowsNT和WindowsCE平台能够被编译成UNICODE,在WindowsNT UNICODE下,XML文档是流到UTF-8文件中,但是内部用宽字符。 UTF-8:对于UTF-8文件,这接受和返回UTF-8字符串(确保_...

    html XML使用大全

    第一部分 XML简介... 9 第1章 XML概览... 9 1.1 什么是XML....1.1.1 XML是元标记语言......1.4.6 Unicode字符集... 19 1.4.7 如何将这些技术融合在一起... 19 1.5 本章小结... 20 第2章 XML应用简介... 21

    xml开源库以及字符转换库

    xml开源库,用于实现xml文件的读取和保存并且可以将unicode与GB2312之间的相互转换

    XMl实用大全(资料全易学习)

    1.4.6 Unicode字符集 19 1.4.7 如何将这些技术融合在一起 19 1.5 本章小结 20 第2章 XML应用简介 21 2.1 什么是XML应用程序 21 2.1.1 化学标记语言(Chemical Markup Language) 21 2.1.2 数学标记语言...

    XMLSpy 2011中文版破解补丁

    支持Unicode、多字符集,支持Well-formed和Validated两种类型的XML文档,支持NewsML等多种标准XML文档的所见即所得的编辑,同时提供了强有力的样式表设计。 Altova 希望其最新发布的XMLSpy会让XML代码的处理更...

    《XML实用大全》.pdf

    1.4.6 Unicode字符集 1.4.7 如何将这些技术融合在一起 1.5 本章小结 第2章 XML应用简介 2.1 什么是XML应用程序 2.1.1 化学标记语言(Chemical Markup Langu 2.1.2 数学标记语言(Mathematical Markup La 2.1.3 频道...

    XMLSPY 2010 企业版

    支持Unicode、多字符集,支持Well-formed和Validated两种类型的XML文档,支持NewsML等多种标准XML文档的所见即所得的编辑,同时提供了强有力的样式表设计。  Altova希望其最新发布的XMLSpy会让XML代码的处理更容易...

    Tinyxml 源代码(VC6 & VS2005)

    TinyXML支持UTF-8,所以可以处理任何语言的XML文件,而且TinyXML也支持“legacy模式”——一种在支持UTF-8之前使用的编码方式,可能最好的解释是“扩展的ascii”。 正常情况下,TinyXML会检测出正确的编码并使用它...

    XML实用大全----xml详细参考书

    1.4.6 Unicode字符集... 19 1.4.7 如何将这些技术融合在一起... 19 1.5 本章小结... 20 第2章 XML应用简介... 21 2.1 什么是XML应用程序... 21 2.1.1 化学标记语言(Chemical Markup Language)... 21 2.1.2 ...

    xml实用大全和轻松学习手册和无废话xml

    7.5.2 其他字符集与Unicode字符集之间的转换 173 7.5.3 如何使用其他字符集编写XML 174 7.6 本章小结 176 第二部分 文档类型定义 177 第8章 文档类型定义和合法性 177 8.1 文档类型定义 177 8.2 文档类型声明 179 ...

    XMLSPY 2013 中文注册版

    XMLSpy是XML(标准通用标记语言的子集)编辑器,支持WYSWYG。支持Unicode、多字符集,支持Well-formed和Validated两种类型的XML文档,支持NewsML等多种标准XML文档的编辑,同时提供了强有力的样式表设计。

    XML+Spy(破解版).rar

    XMLSpy是XML(标准通用标记语言的子集)编辑器,支持WYSWYG。支持Unicode、多字符集,支持Well-formed和Validated两种类型的XML文档,支持NewsML等多种标准XML文档的编辑,同时提供了强有力的样式表设计。

    Font-Awesome-Icon-Chars:几种文件格式的Font Awesome图标Unicode字符列表

    字体真棒图标字符列表 几种文件格式的图标Unicode字符列表。 此列表仅包含图标。安装通过 : npm install font-awesome-icon-chars通过: yarn add font-awesome-icon-chars用法资产您可以在目录中使用字符列表文件...

    XML实用大全(web开发必备手册)

    1.4.6 Unicode字符集... 19 1.4.7 如何将这些技术融合在一起... 19 1.5 本章小结... 20 第2章 XML应用简介... 21 2.1 什么是XML应用程序... 21 2.1.1 化学标记语言(Chemical Markup Language)... 21 2.1.2 ...

    unicode转utf8格式

    字符串unicode转utf8格式,常用于xml文件中格的字符串专程unicode格式

    XMLSpy2013破解版

    经过测试,可用,XMLSpy是XML(标准通用标记语言的子集)编辑器,支持...支持Unicode、多字符集,支持Well-formed和Validated两种类型的XML文档,支持NewsML等多种标准XML文档的编辑,同时提供了强有力的样式表设计。

    XML编辑器AltovaXMLSpyPro2018SP1专业版官方英文注册版(附安装教程)32位

    XMLSpy支持WYSWYG,支持Unicode、多字符集,支持Well-formed和Validated两种类型的XML文档,支持NewsML等多种标准XML文档的编辑,同时还提供了强有力的样式表设计功能,符合行业标准的XML开发环境,专门用于设计,...

Global site tag (gtag.js) - Google Analytics