Java stax:3字节UTF-8序列的无效字节2

问题描述 投票:0回答:1

我正在尝试使用stax解析xml,但出现的错误是:

javax.xml.stream.XMLStreamException: ParseError at [row,col]:[8,64]
Message: Invalid byte 2 of 3-byte UTF-8 sequence.

我已经尝试查找它,但是找不到解决方案。我必须解析的代码是:

public List<Vild> getVildData(File file){
    XMLInputFactory factory = XMLInputFactory.newFactory();
    try {
        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(Files.readAllBytes(file.toPath()));
        XMLStreamReader reader = factory.createXMLStreamReader(byteArrayInputStream);
        List<Vild> vild = saveVild(reader);
        reader.close();
        return vild;
    } catch (IOException e) {
        e.printStackTrace();
    } catch (XMLStreamException e) {
        e.printStackTrace();
    }
    return Collections.emptyList();
}
private List<Vild> saveVild(XMLStreamReader streamReader) {
    List<Vild> vildList = new ArrayList<>();
    try{
        Vild vild = new Vild();
        while (streamReader.hasNext()) {
            streamReader.next();
            //Creating list with data
        }
    }catch(XMLStreamException | IllegalStateException ex) {
        ex.printStackTrace();
    }
    return Collections.emptyList();
}

我已经尝试过以下在网上找到的内容:

XMLStreamReader reader = factory.createXMLStreamReader(byteArrayInputStream,"UTF-8");

但是那没有用。有人知道解决此问题的方法吗?

java xml xml-parsing stax
1个回答
0
投票

您的XML文件未使用UTF-8编码。尝试找出编码是什么。

例如,如果编码结果是“latín1”,则在创建xml阅读器时使用它:

XMLStreamReader reader = factory.createXMLStreamReader(byteArrayInputStream,"ISO8859-1")
© www.soinside.com 2019 - 2024. All rights reserved.