Spaces:
Runtime error
Runtime error
| # XML Parser | |
| > ВАЖНО!!! README.md сгенерировано автоматически, поэтому может содержать неточности. | |
| Модуль для извлечения структурированной информации из XML-файлов документов. | |
| ## Общий процесс парсинга | |
| 1. Рекурсивный поиск всех XML-файлов в указанной директории | |
| 2. Для каждого файла: | |
| - Извлечение основной информации (статус, владелец, название) | |
| - При необходимости извлечение содержимого (таблицы и текст) | |
| 3. Фильтрация документов по статусу | |
| 4. Формирование итоговой коллекции документов | |
| ## Подробное описание компонентов | |
| ### XMLParser | |
| Основной класс, координирующий работу всех парсеров. Использует три специализированных парсера: | |
| - XMLInfoParser - для основной информации | |
| - XMLTableParser - для таблиц | |
| - XMLTextParser - для текстового содержимого | |
| ### XMLInfoParser | |
| Извлекает основную информацию о документе: | |
| 1. Находит специальные теги (STATUS_TAG, OWNER_TAG, NAME_TAG) | |
| 2. Извлекает значения между тегами `<w:t>` и `</w:t>` | |
| 3. Проверяет статус документа (только USEFUL_STATUSES) | |
| 4. Формирует объект ParsedXML | |
| ### XMLTableParser | |
| Обрабатывает таблицы в документе: | |
| 1. Находит все блоки таблиц (`<w:tbl>`) | |
| 2. Определяет тип таблицы (обычная/сокращения/регламентирующие документы) | |
| 3. Извлекает строки (`<w:tr>`) и ячейки (`<w:tc>`) | |
| 4. Обрабатывает специальные случаи (таблицы с шапкой) | |
| 5. Формирует текстовое представление таблиц | |
| ### XMLTextParser | |
| Очищает текст от XML-разметки: | |
| 1. Удаляет таблицы | |
| 2. Удаляет бинарные данные | |
| 3. Удаляет специальные конструкции (KCC, CC patterns) | |
| 4. Очищает от XML-тегов | |
| 5. Обрабатывает специальные символы | |
| ## Структуры данных | |
| - ParsedXML - информация об одном документе | |
| - ParsedXMLs - коллекция документов | |
| - ParsedTable - данные одной таблицы | |
| - ParsedTables - коллекция таблиц | |
| - ParsedRow - данные одной строки таблицы | |
| ## Особенности реализации | |
| 1. Кодировка по умолчанию: cp866 | |
| 2. Фильтрация по статусам: 'Актуальный', 'Требует актуализации', 'Упразднён' | |
| 3. Специальная обработка таблиц сокращений и регламентирующих документов | |
| 4. Возможность исключения определенных файлов при парсинге | |
| 5. Опциональное извлечение содержимого (флаг include_content) | |
| ## Использование | |
| ```python | |
| from components.parser.xml.xml_parser import XMLParser | |
| # Создание парсера | |
| parser = XMLParser() | |
| # Парсинг одного файла | |
| result = parser.parse("path/to/file.xml", include_content=True) | |
| # Парсинг всех файлов в директории | |
| results = parser.parse_all( | |
| "path/to/dir", | |
| encoding='cp866', | |
| include_content=True, | |
| ignore_files_contains=['temp', 'draft'] | |
| ) | |
| ``` |