Как вы создаете парсер XML? - PullRequest
       0

Как вы создаете парсер XML?

3 голосов
/ 13 февраля 2011

Может кто-нибудь направить меня к хорошему руководству по созданию синтаксического анализатора XML?Я понимаю, что в большинстве языков уже есть библиотеки для этой задачи, но мне интересно узнать грамматику XML и теорию работы синтаксических анализаторов.Я пытался найти что-то, что объясняет это, но не смог ничего найти.

Ответы [ 3 ]

1 голос
/ 13 февраля 2011

Просто, чтобы прояснить это, вам следует НИКОГДА НЕ пытаться написать синтаксический анализатор XML для использования в производстве. Это

  1. способ сложный для большинства людей и действительно, очень трудно понять, и
  2. решаемая проблема на любом языке.

Чтобы получить обзор XML, я предлагаю вам прочитать «XML In A Nutshell» в O'Reilly и просто попробовать что-то сделать с преобразованиями XML и XML. Для общего построения парсера Техника синтаксического анализа выглядит действительно многообещающе. Но на самом деле синтаксический анализ XML довольно сложен, поэтому вы, вероятно, должны начать с получения знаний, используя его. Кроме того, документация в этой области намного меньше ...

0 голосов
/ 14 февраля 2011

Я думаю, что люди не могут писать такие уроки; и, как я заметил, я не думаю, что общие методы синтаксического анализа очень полезны. Синтаксические анализаторы XML не являются чем-то обычным. Подход lex + yacc работает слишком хорошо (часть лексера более важна, чем анализатор).

Я знаю, что большинство парсеров XML, готовых к работе, - звери, но лучше всего начать с чтения. У Java есть несколько примеров, и xmlpull может быть одним из самых простых правильных парсеров. Woodstox и Xerces - самые совместимые ("полные") парсеры с большой кодовой базой, поэтому, безусловно, не легкое чтение. Но они обрабатывают все, что должен анализатор XML, поэтому они могут быть и образовательными. Но остерегайтесь поддельных синтаксических анализаторов, которые пропускают проверки на предмет мандатов спецификации XML (например, Javolution проверяет очень мало вещей, например, ни проверок правильности символов, ни дублирования имен атрибутов).

Другая вещь, которую нужно прочитать, это, очевидно, спецификация XML. Это одна из наиболее хорошо написанных спецификаций IMO; точное и полное, даже если не совсем легкое чтение. Но, учитывая все, что он охватывает, на самом деле это не так уж долго.

0 голосов
/ 13 февраля 2011

Если вы - студент информатики и хотите написать XML-парсер в качестве учебного упражнения, тогда хорошо: это хороший способ провести влажные выходные, и вам не нужно задавать вопрос, потому что у вас есть доступ в библиотеку учебников о том, как писать синтаксические анализаторы, и если у вас есть конкретные проблемы, связанные с XML, вы всегда можете заглянуть в код различных синтаксических анализаторов с открытым исходным кодом, чтобы увидеть, как эксперты решили эту проблему.

Если вы не изучаете компьютерные науки, я бы посоветовал вам стать одним из них - теория написания синтаксических анализаторов для разных классов грамматики является частью основы предмета.

...