Простой XML сканер

XML reader - написанный в стиле минимализма. Предствляет собой небольшой конечный автомат, на вход которого поступает XML текст, по символам. Доступно только чтение текстов, тегов, атрибутов и игнорирование коментариев. Теги вида <? игнорируются (хотя их добавить будет легко). Всякие мало, нужные в простых ситуациях вещи, навроде пространства имён, извратов в которых учавствуют квадратные скобки ([) не предусмотренны. Чтение текста производится в мягком режиме, любые ошибки по возможности игнорируются. Например, если попадаются атрибуты без значений, или значение атрибутов стоит без кавычек, то подобные атрибуты тупо игнорируются. Пространство имён тегов, считывается как часть имени тега. Сама возможность читать XML по символам, была необходима. Сам сканер изначально расчитан на работу в сети, в результате чего возникаются два момента:

Опустимся на землю

В исходнике представленно три класса. Честно скажу - не тестировал. Просто прошёлся по паре XML файлов, вроде бы всё работает.

XML_core

Начальная функциональность. Перегружаемые функции обработки событий разбора:

XML_simple

Минимальная проверка и стек. Как говорилось выше, закрытие не совпадающих тегов не выполняется (беру пример с других). В принципе можно сделать восстановление стека. Принудительное закрытие тега, если совпадающая пара, есть недалеко от вершины стека.

XML_tree

Постройка дерева в памяти. Для хранения применяются вложенные STL списки. Текстовые отрывки храняться как теги с незаданными родителями.

Download

xml.cpp
Hosted by uCoz