com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte 错误是我在使用java的api解析xml文件时报的错误
网上搜了下都说是xml文件中声明的编码与xml文件本身保存时的编码不一致。比如你的声明是
<?xml version= "1.0" encoding= "UTF-8" ?> 但是却以ANSI格式编码保存, 解决办法就是重新设置xml文件保存时的编码与声明的一致.
这样的修改使用传入参数为文件路径的情况下是可以的代码为
DocumentBuilder builder = fcty.newDocumentBuilder();
document = builder.parse(file);//解析成功,file为文件路径
但是下面情况却任然报错
parser.parse(new ByteArrayInputStream(userType.getUserMetadataXML().getBytes()));
//此行的意思是把一个字符串转换为字节流,如果该字符串内容放到一个文件中解析,本身不报错,但是这样访问就报上面异常
解决的方法是转换时指定字节流为utf-8
parser.parse(new ByteArrayInputStream(userType.getUserMetadataXML().getBytes(Charset.forName("UTF-8"))))