Создание таблиц из простого текста
Я пытаюсь создать приложение winforms, которое может сделать следующее:
- Взять в PDF-файл
- Извлечение данных (на основе какого-либо шаблона или файла конфигурации)
- Построить таблицы данных
- Сериализация и загрузка таблиц данных в веб-сервис
На данный момент у меня есть PDF-файл, преобразованный в текстовую строку, но у меня возникают проблемы с форматом шаблона. Сначала я попытался создать свои собственные XML-файлы пользовательской конфигурации - хотя это удовлетворяло бы требованиям проекта, мне было крайне сложно выразить необходимые инструкции в достаточно общем виде. Сначала я попытался обрабатывать текст построчно и использовать серию флагов для различных инструкций. Эта концепция, казалось, работала, пока я не понял, что таблицы данных часто занимают несколько страниц с посторонним текстом между ними. Моя первоначальная попытка обработки прошла так:
- Загрузить первую инструкцию (начальный флаг, конечный флаг, действие (например, создать таблицу) и структуру таблицы)
- Когда флаг завершения достигнут, загрузите следующую инструкцию
К сожалению, это не учитывает циклы и не дает достаточного контроля над тем, как все это работает. В некоторых случаях мне нужно получить информацию, которая добавляется к каждой строке данных. Я разработал, как сделать это, используя инструкции в очереди, затем вернувшись и обрабатывая их снова, когда будет построена остальная часть таблицы. Проблема зацикливания все еще остается, так как каждая таблица названа на основе инструкции.
Сейчас я смотрю в VTL и пытаюсь понять, поможет ли мне такой проект, как Vici. Наступает момент, когда я создаю язык псевдо-сценариев, просто чтобы выполнить то, что мне нужно, и это становится слишком трудным.
ВЕРСИЯ TLDR: Существуют ли какие-либо библиотеки или проекты, которые помогут мне построить таблицы данных из простого текста, используя какой-либо шаблон или конфигурационные файлы?
1 ответ
Думали ли вы о возможности НЕ использовать шаблон или файл конфигурации? Каковы преимущества использования такого файла? Не могли бы вы, например, создать импровизированную библиотеку и просто написать реальный код обработки в C#? Я сделал то же самое, что вы делаете сейчас, один раз, и в ретроспективе, это то, что я должен был сделать.
Вы сказали это сами, вы разрабатываете какой-то язык сценариев. Это уже означает, что изменения кода. Что бы вы ни использовали, если сценарий достаточно сложный, он обязательно закончится изменением кода или подобными усилиями. Вы можете упаковать код обработки отдельно от кода библиотеки и обновить сборку, в которой он содержится.