SAXException с точкой с запятой - PullRequest
0 голосов
/ 22 марта 2012

Я хочу проанализировать XML-файлы, в которых есть такие элементы:

<element>&amp</element>
<element>&amp;</element>

Но SAX Parser дает мне следующее исключение при разборе:

org.xml.sax.SAXParseException: The reference to entity "amp" must end with the ';' delimiter.
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:249)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:208)

Есть ли какой-нибудь известный способ для этого?

Java-код, который выдает исключение:

DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file);

1 Ответ

1 голос
/ 22 марта 2012

Я не могу воспроизвести это с указанным вами XML (до вашего редактирования). Короткая, но полная программа:

import java.io.*;
import javax.xml.parsers.DocumentBuilderFactory;

public class Test {
    public static void main(String[] args) throws Exception {
        File file = new File("test.xml");
        DocumentBuilderFactory.newInstance()
            .newDocumentBuilder()
                .parse(file);
    }
}

С файлом:

<element>&amp;</element>

... работает без ошибок.

Когда файл просто:

<element>&amp</element>

... показывает то же исключение, о котором вы сообщили.

Я пришел к выводу, что это правильно, и ваш файл поврежден . Найдите в файле все вхождения &amp и найдите, где отсутствует точка с запятой.

...