Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> fatal error, при попытке открыть не xml file 
:(
    Опции темы
марина
Дата 5.5.2007, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 2.8.2006

Репутация: нет
Всего: нет



При попытке открыть не хмл файл, бросается [Fatal Error] testAnotherFile.txt:1:1: Content is not allowed in prolog

как это ловить? и надо ли?
никак не могу убрать, чтобы не писалось это

PM MAIL   Вверх
Hidrag
Дата 5.5.2007, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: 3
Всего: 25



Цитата(марина @  5.5.2007,  21:29 Найти цитируемый пост)
[Fatal Error] testAnotherFile.txt:1:1: Content is not allowed in prolog
 что ето???

Текст программы в студию!



--------------------
user posted image
PM WWW ICQ   Вверх
nornad
Дата 6.5.2007, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



марина, выложи код, с помощью которого открываешь файл. Да и сам файл тоже не мешает увидеть. smile 
Иначе разговор из разряда:
Код

- Помогите мне, у меня программа не работает!!!
- Какая программа?
- Не знаю, но она не работает.



--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
марина
Дата 6.5.2007, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 2.8.2006

Репутация: нет
Всего: нет



я думала что это какая-то общая ошибка, о которой все знают...
код большой, но вот примерчик маленький написала
Чтобы считать документ
Код

public class Reader {
    private Document myDocument;

    public Reader(File file) throws SAXException,
        ParserConfigurationException, IOException {
        myDocument = getBuilder().parse(file);
    }

    public void read() {
        System.out.print("Читаемм");
        //buildDiagram(myDocument.getDocumentElement());
    }

    private DocumentBuilder getBuilder()
        throws SAXException, ParserConfigurationException {
        DocumentBuilderFactory factory =
            DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(true);
        factory.setValidating(false);
        return factory.newDocumentBuilder();
    }
}



 
Код

public class Main {
    static private boolean readDiagram(File file) {
        Reader fr;
        try {
            fr = new Reader(file);
            fr.read();

        }catch (SAXParseException e) {
            System.out.println("Ошибка при чтении1"+e.toString());
            e.printStackTrace();
            return false;
        }
        catch (Exception e) {
            System.out.println("Ошибка при чтении2"+e.toString());
            return false;
        }
        catch (Error e) {
            System.out.println("Ошибка при чтении3 error"+e.toString());
            return false;
        }
        catch (Throwable w) {
            System.out.println("Ошибка при чтении4 fatal"+w.toString());
            return false;

        }
        return true;
    }

    public static void main(String[] args) {
        File file = new File("tests/testAnotherFile.txt");
        readDiagram(file);

    }
}

пытаюсь открытоь просто любой файл без хмл заголовка
к примеру текстовый файл testAnotherFile.txt в котором написано  только "marina"

бросает если распечатать стек трейс это:

[Fatal Error] testAnotherFile.txt:1:1: Content is not allowed in prolog.
Ошибка при чтении1org.xml.sax.SAXParseException: 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:264)
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:292)
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:172)
    at reader.Reader.<init>(Reader.java:25)
    at Main.readDiagram(Main.java:18)
    at Main.main(Main.java:44)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:86)

вопрос: как убрать это [Fatal Error] testAnotherFile.txt:1:1: Content is not allowed in prolog.?

PM MAIL   Вверх
LSD
Дата 6.5.2007, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(марина @  6.5.2007,  10:34 Найти цитируемый пост)
к примеру текстовый файл testAnotherFile.txt в котором написано  только "marina"

Текстовый файл, в котором написано только "marina", не является валидным XML документом. Отсюда и ошибка.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
nornad
Дата 6.5.2007, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(марина @  6.5.2007,  12:34 Найти цитируемый пост)
я думала что это какая-то общая ошибка, о которой все знают...

Так и есть. Только никто же не знал, как ты пыталась открывать файл.  smile 
Ты при открытии скармливаешь файл SAXParser'у. Естественно, он ожидает XML-файл. Не найдя такового он и ругается.
Почему бы не открывать простые текстовые файлы просто как текст?  smile 


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
марина
Дата 6.5.2007, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 2.8.2006

Репутация: нет
Всего: нет



а как проверять простой или нет это файл?
а если у меня там пользователь вообще картинку открыть захочет?

Добавлено через 53 секунды
и Fatal Error  - можно расказать что это такое? и можно ли это отловить?
PM MAIL   Вверх
nornad
Дата 6.5.2007, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Ну, для начала, хотя бы, по расширению файла.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
марина
Дата 6.5.2007, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 2.8.2006

Репутация: нет
Всего: нет



а не поначалу
PM MAIL   Вверх
nornad
Дата 7.5.2007, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



А не поначалу - можно открывать файл сначала как байтовый массив, смотреть, что в нём (как минимум - заголовок формата), а потом уже либо открывать файл нужным способом, либо ругать о неподдерживаемом формате.
Только я не понимаю, зачем такие сложности? Намного проще открывать по расширению и если попытка не удалась (отлов исключений сделать можешь, надеюсь) - ругаться, что формат файла не соответствует ожиданиям.
Или ещё проще - из контекста обычно можно сделать предположение, какого типа файл должен открываться. Например, если мы хотим запихнуть содержимое файла в текстовый редактор, то файл явно должен быть текстовым, а не экзешником или картинкой. И снова - если упали, то ругаемся.

P.S. Не надо пытаться решать за пользователя всё - в 99.9999999999999999% это будет только во вред.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
марина
Дата 7.5.2007, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 2.8.2006

Репутация: нет
Всего: нет



ну к примеру я сохраняю и могу открывать только файлы со своим расширением .net , но вдруг тот файл который открою поврежден ... и его хмл заголовок отсутствует...
кинется fatal error 
те не надо думать о таких случаях?
PM MAIL   Вверх
nornad
Дата 7.5.2007, 03:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Блин, ты читаешь внимательно? smile 
Цитата(nornad @  7.5.2007,  03:03 Найти цитируемый пост)
Намного проще открывать по расширению и если попытка не удалась (отлов исключений сделать можешь, надеюсь) - ругаться, что формат файла не соответствует ожиданиям.




--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
LSD
Дата 7.5.2007, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(марина @  7.5.2007,  01:35 Найти цитируемый пост)
ну к примеру я сохраняю и могу открывать только файлы со своим расширением .net , но вдруг тот файл который открою поврежден ... и его хмл заголовок отсутствует...
кинется fatal error 
те не надо думать о таких случаях? 

Ты просто в том месте где будешь парсить файл, поставь блок try/catch и если произойдет ошибка, выдай пользователю сообщение, что файл имеет неправильный формат или поврежден. Пусть выберет другой файл.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
марина
Дата 7.5.2007, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 2.8.2006

Репутация: нет
Всего: нет



Исключение я поймаю и все выведу, не в том было дело
вот что пришлось написать что бы fatal error не писалось в консоли
Код

        DocumentBuilder db = getBuilder();
        db.setErrorHandler(new ErrorHandler() {
                    public void warning(SAXParseException exception) throws SAXException {
                    }

                    public void error(SAXParseException exception) throws SAXException {
                    }

                    public void fatalError(SAXParseException exception) throws SAXException {
                    }
                } );


а случай что фаил с моим расширением может быть не просто поврежден, но без хмл заголовка(а именно тогда и появиться этот фатал) очень даже может быть, просто у меня сложилось впечатление будто меня не понимают, и я что-то плохо обьяснила
PM MAIL   Вверх
LSD
Дата 7.5.2007, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Что ты подразумеваешь под: без хмл заголовка?
Если ты имеешь в виду, без пролога:
Код
<root-element>
...
</root-element>

то такие документы нормально парсятся.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0589 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.