Есть ли лучшее регулярное выражение для синтаксического анализа DTD
Вопрос
У меня есть DTD для OFX 1.03 (их последняя версия, несмотря на то, что была разработана и выпущена 1.60, но я отвлекся ...)
Я хотел бы использовать регулярное выражение для создания групп, которые разделяют объект, элемент, другие теги на его части для дальнейшей обработки, так что я бы взял такой тег, как этот:
<!ENTITY % ACCTTOMACRO "(BANKACCTTO | CCACCTTO | INVACCTTO)">
И создайте объект, подобный этому
новый EntityTag { строковое имя = "%ACCTTOMACRO";string[] Дочерние типы = новая строка[] {"BANKACCTTO", "CCACCTTO", "INVACCTTO"}};
У меня есть регулярное выражение, которое выглядит примерно так:
Regex re = new Regex(@"<!(\b)+([\s\S])?[^>]+>");
По общему признанию, я новичок в регулярных выражениях, поэтому до сих пор я неплохо справлялся с получением этого, что дает мне коллекцию совпадений по DTD для каждого тега без комментариев.
Я хотел бы использовать группировку, чтобы облегчить создание ранее упомянутого объекта.
Если я нахожусь на совершенно неправильном пути, пожалуйста, проинструктируйте меня, однако, если вы все-таки скачаете этот документ, я думаю, вы можете счесть его нестандартным.(Visual Studio выдает несколько красных флажков из-за того, как отформатирован этот документ)
Я не ожидаю, что кто-то станет лезть на рожон, но для любопытных вот Ссылка чтобы загрузить спецификации.
Решение
Похоже, у них тоже есть доступная схема.Почему бы вместо этого не загрузить схему и не проанализировать ее с помощью анализатора XML (например, LINQ-to-XML)?