Подтвердить что ты не робот

Java-анализ XML-документа дает "Недопустимый контент в прологе". ошибка

Я пишу программу на Java, которая берет пользовательский XML файл и анализирует его. Я использую XML файл для хранения. Я получаю следующую ошибку в Eclipse.

[Fatal Error] :1:1: Content is not allowed in prolog.
org.xml.sax.SAXParseException: Content is not allowed in prolog.
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:239)
    at     com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:283  )
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:208)
    at me.ericso.psusoc.RequirementSatisfier.parseXML(RequirementSatisfier.java:61)
    at me.ericso.psusoc.RequirementSatisfier.getCourses(RequirementSatisfier.java:35)
    at     me.ericso.psusoc.programs.RequirementSatisfierProgram.main(RequirementSatisfierProgram.java:23  )

В начало файла XML включено:

<?xml version="1.0" ?>
<PSU>
     <Major id="IST">
        <name>Information Science and Technology</name>
        <degree>B.S.</degree>
        <option> Information Systems: Design and Development Option</option>
        <requirements>
            <firstlevel type="General_Education" credits="45">
                <component type="Writing_Speaking">GWS</component>
                <component type="Quantification">GQ</component>

Программа может читать в XML файле, но когда я вызываю DocumentBuilder.parse(XMLFile), чтобы получить синтаксический анализ org.w3c.dom.Document, я получаю ошибку выше.

Мне не кажется, что у меня есть недопустимый контент в прологе моего XML файла. Я не могу понять, что не так. Пожалуйста помоги. Спасибо.

4b9b3361

Ответ 1

Пожалуйста, проверьте файл xml, есть ли у него какой-либо символ нежелательной почты, такой как .If существует, пожалуйста, используйте следующий синтаксис, чтобы удалить это.

String XString = writer.toString();
XString = XString.replaceAll("[^\\x20-\\x7e]", "");

Ответ 2

Я думаю, что это также решение этой проблемы.

Измените тип документа с "Кодировать в UTF-8" "Кодировать в UTF-8 без спецификации"

Я решил свою проблему, выполнив те же самые изменения.

Ответ 3

Убедитесь, что в начале файла XML нет скрытых пробелов. Также возможно включить кодировку = "UTF-8" (или 16? Нет подсказки) в node.

Ответ 4

Документ выглядит хорошо для меня, но я подозреваю, что он содержит невидимые символы. Откройте его в шестнадцатеричном редакторе, чтобы проверить, что на самом деле ничего не происходит до самого первого "<". Убедитесь, что пробелы в заголовке XML являются пробелами. Может быть, удалить пробел перед "? > ". Проверьте, какие разрывы строк используются.

Убедитесь, что документ соответствует UTF-8. Некоторые редакторы окон сохраняют документ как UTF-16 (т.е. Каждый второй байт равен 0).

Ответ 5

Я предполагаю, что у вас есть правильная кодировка xml и сопоставление с Schema.

Если вы все еще получаете эту ошибку, проверьте код, который отменяет выбор xml и типа ввода, который вы использовали. Поскольку документы XML объявляют свою собственную кодировку, предпочтительно создать объект StreamSource из InputStream, а не из Reader, чтобы XML-процессор мог корректно обрабатывать заявленную кодировку [Ref Book: Java в Nutshell]

Надеюсь, это поможет!

Ответ 6

Вы не указываете правильный адрес для файла. Вам необходимо указать адрес, например C:/Users/xyz/Desktop/myfile.xml

Ответ 7

Если вы можете управлять файлом xml, попробуйте добавить немного больше информации в начало файла:

<?xml version="1.0" encoding="UTF-16" standalone="no"?>

Ответ 8

Проверьте любую проблему синтаксиса в файле XMl. Я нашел эту ошибку при работе с xsl/xsp с Cocoon, и я определяю переменную, используя несуществующий node или что-то в этом роде. Проверьте весь XML.