Java stax: ссылка на сущность "R" должна заканчиваться символом ";" ограничитель - PullRequest
1 голос
/ 02 апреля 2020

Я пытаюсь проанализировать xml, используя stax, но я получаю ошибку:

javax.xml.stream.XMLStreamException: ParseError at [row,col]:[414,47]
Message: The reference to entity "R" must end with the ';' delimiter.

, которая застревает на строке 414, в которой P&R находится внутри файла xml. Код, который я должен проанализировать, это:

public List<Vild> getVildData(File file){
    XMLInputFactory factory = XMLInputFactory.newFactory();
    try {
        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(Files.readAllBytes(file.toPath()));
        XMLStreamReader reader = factory.createXMLStreamReader(byteArrayInputStream, "iso8859-1");
        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();
}

Я прочитал в Интернете, что & неверный код xml, но я не знаю, как его изменить, прежде чем он выдаст эту ошибку в saveVild метод. Кто-нибудь знает, как это сделать эффективно?

1 Ответ

0 голосов
/ 02 апреля 2020

Измените вопрос: вы не пытаетесь проанализировать файл XML, вы пытаетесь проанализировать файл не XML. Для этого вам нужен не XML синтаксический анализатор, и для написания такого синтаксического анализатора вы должны начать со спецификации языка, который вы пытаетесь проанализировать, и вам нужно будет согласовать спецификацию этого языка с другими партнеры по обмену данными.

Сколько работы вы все можете сэкономить, соблюдая стандарты!

Обращайтесь со сломанными XML поступающими в ваш магазин так же, как с другими сломанными товарами, поступающими из поставщик: верните его отправителю с пометкой «непригоден для использования».

...