![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
stan90 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.11.2009 Репутация: нет Всего: нет |
у меня есть синтаксический анализатор XML файла,но у меня получилось сделать только чтобы он проверял открывающиеся и закрывающиеся теги и показывал номер позиции где ошибка...
подскажите пожалуйста как сделать проверку для заголовка?
|
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
А зачем писать свой велосипед? Почему бы не использовать стандартный SAX парсер?
-------------------- 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. |
|||
|
||||
stan90 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.11.2009 Репутация: нет Всего: нет |
у меня задание такое))
|
|||
|
||||
stan90 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.11.2009 Репутация: нет Всего: нет |
товарищи очень нужна ваша помощь!!)
|
|||
|
||||
ivanovpv |
|
|||
![]() Варвар ![]() ![]() Профиль Группа: Участник Сообщений: 639 Регистрация: 26.1.2005 Где: Москва Репутация: 4 Всего: 28 |
Таких задание-творцов надо фтопку... Проще же применить SAX парсер ловить исключения и выкидывать сообщения парсера...
Если ближе к телу, то парсер проще сделать рекурсивным примерно таким: 1) Распознавание заголовка 2) Чтение первого тега а) Если есть вложенный тег - начинаем рекурсию (см. п.1) 3) Чтение закрывающего тега Отдельно обработки собственно тега (выделение параметров), убирание пробелов, комментариев -------------------- Aut viam inveniam aut faciam |
|||
|
||||
stan90 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.11.2009 Репутация: нет Всего: нет |
ну вот я сделал для открывающихся и закрывающихся тегов..а как для комментариев,загаловка и параметров сделать я не знаю..у меня не получается)
|
|||
|
||||
rimidal |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 25.9.2007 Репутация: 1 Всего: 1 |
Есть такая штука как БНФ и РБНФ. Это что касается теории парсеров. К этой теории также относятся конечные автоматы и регулярные выражения.
Есть еще генераторы парсеров (еще их называют компиляторы компиляторов). Я например использовал CocoR. Для него есть плагин под eclipse. Но есть и множество других генераторов. Их можно найти например здесь: http://www.java-sources.org/open-source/parser-generators Это сообщение отредактировал(а) rimidal - 1.12.2009, 10:17 |
|||
|
||||
stan90 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.11.2009 Репутация: нет Всего: нет |
так мне не нужны никакие генераторы))
мне нужно чтобы программа которую я начал писать проверяла правильно ли составлен XML документ или нет) |
|||
|
||||
rimidal |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 25.9.2007 Репутация: 1 Всего: 1 |
Генератор сгенерирует вам исходный код тех классов которые и должны выполнять эту задачу. На примере CocoR : 1. Надо описать парсер на БНФ (в вашем случае это БНФ XML-я - его кстати можно найти в интернете). 2. По полученому БНФ будут сгенерированы исходники двух классов которые после компиляции будут производить разбор выражений (в вашем случае XML файлы). Правда здесь есть один момент - надо знать синтаксис описания БНФ для конкретного генератора. Как правило к генераторам прилагаются примеры - может и повезет с XML-ем. |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Заголовок XML, это processing instruction и в принципе она может встречаться в любом месте XML документа (вернее заголовок может быть, только в начале, а вот другие processing instruction в любом месте).
В твоем случае, тебе надо сделать парсинг помимо тегов, еще и processing instructions, комментариев, DTD, CDATA. Создай отдельный класс, который будет заниматься разбивкой входного текста на теги: открывающий тег, закрывающий тег, тело тега, комментарий, DTD, CDATA и processing instruction. -------------------- 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. |
|||
|
||||
rimidal |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 25.9.2007 Репутация: 1 Всего: 1 |
||||
|
||||
stan90 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.11.2009 Репутация: нет Всего: нет |
а ни у кого нет может быть кода какого нить парсера для проверки xml,я бы по анологии разобрался бы?)
|
|||
|
||||
rimidal |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 25.9.2007 Репутация: 1 Всего: 1 |
Так ведь SAX открытая библиотека, с исходниками. Можно посмотреть там.
http://sourceforge.net/projects/sax/files/ |
|||
|
||||
stan90 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.11.2009 Репутация: нет Всего: нет |
не то..(
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |