说简单点当你解析别人的xml格式出现这个错误可能就是别人在生成xml时没有保存为utf-8的字符编码格式。 在中文版的window下java的默认的编码为GBK,也就是所虽然我们标识了要将xml保存为utf-8格式但实际上文件是以GBK格式来保存的,所以这也就是为什么能够我们使用GBK、GB2312编码来生成xml文件能正确的被解析,而以UTF-8格式生成的文件不能被xml解析器所解析的原因。 xml解析时遇到的编码异常: org.dom4j.DocumentException: Invalid byte 1 of 1-byte UTF-8 sequence. Nested exception: Invalid byte 1 of 1-byte UTF-8 sequence. 解决: 1、最简单就是把<?xml version="1.0" encoding="UTF-8"?>改成<?xml version="1.0" encoding="gbk"?> 2、或者把xml打开另存的时候把字符集改为UTF-8后保存 3、在代码解析的时候先把xml重新写一遍 SAXReader reader = new SAXReader(); org.dom4j.Document document = reader.read("D:\\ha.xml"); OutputFormat of = new OutputFormat(); of.setEncoding("UTF-8"); //改变编码方式 XMLWriter writer = new XMLWriter(new FileWriter "d:\\dom4j.xml"), of); 4、直接dom4j读取的时候用io来读,修改字符编码 FileInputStream in = new FileInputStream(new File(fileName)); Reader read = new InputStreamReader(in,"gbk"); Document document = reader.read(read); |
|