Что нужно базовому анализатору XML DOM? - PullRequest
2 голосов
/ 15 сентября 2010

Я начал программировать на языке Go Google, и пакет, который я пытаюсь написать, представляет собой API для обработки и создания файлов DOCX (я знаком с этой темой и думаю, что это будет хорошим способом изучения Go ). Поскольку DOCX-файлы в основном представляют собой ZIP-файлы с различными XML-файлами внутри, мне, скорее, нужен анализатор XML DOM. Однако я не смог найти ни одного нативного XML-парсера Go DOM, так как единственные, что я видел, казались очень ограниченными, и, вероятно, парсеры SAX (любой, кто использует Go, поправьте меня, если я не прав).

Итак, на прошлых выходных я написал очень простой DOM XML-парсер, который смог проанализировать один из более простых XML-файлов в пакете DOCX и вывести его обратно без изменений. В настоящее время я не собираюсь беспокоиться о поддержке пространств имен, XSLT или проверки схемы, так как они бесполезны для манипулирования файлами DOCX. У меня вопрос: какие еще стандарты и функциональность XML было бы важно включить в анализатор?

На данный момент он только создает дерево элементов и атрибутов, которое я могу изменить и сохранить. Сейчас я не работаю с элементами CDATA или escape-символами XML (хотя это будет легко сделать, и я вернусь к этому в эти выходные).

Ответы [ 2 ]

3 голосов
/ 15 сентября 2010

Прежде всего: если вы специально хотите использовать DOM-парсер, вам нужно реализовать DOM API.Но я не уверен, действительно ли вы это имеете в виду;возможно, вы просто имеете в виду синтаксический анализатор XML, который создает модель дерева XML («dom»);или просто парсер XML?DOM вряд ли единственный путь.Также обратите внимание, что реализация модели дерева DOM с использованием SAX-парсера является наиболее распространенным способом;немногие, если какие-либо DOM-пакеты имеют встроенные парсеры, обычно парсер предоставляется отдельно.

Что касается функций парсера XML, некоторые вещи, которые на мой взгляд ДОЛЖНЫ быть:

  • Обработка символовсущности (амперсанд и число), предварительно определенные общие сущности (lt, gt, apos, quot)
  • Обработка объявления xml ()
  • Обработка различных входных кодировок;объявляется декларацией xml или внешне - слишком много анализаторов экономит на этом, но это очень важно, поскольку документы xml могут надежно определять кодировку внутри.
  • Проверка уникальности значений атрибутов
  • Проверка правильности вложенностиэлементов
  • Пропуск комментариев
  • Пропуск (если не обработка) инструкций по обработке
  • Обработка CDATA - это просто сделать
  • Отслеживание линиичисла для сообщений об ошибках

Другие, в конечном итоге полезные вещи:

  • Обработка пространства имен
  • Проверка достоверности символов, содержимого и имен
  • Нормализация строк по спецификации XML
1 голос
/ 15 сентября 2010

Вы смотрели на XML-парсер Go? http://golang.org/pkg/xml/

Если вам не хватает нужной вам функциональности, возможно, ее все же проще добавить, чем свернуть собственную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...