2009-10-16 2 views
0

У меня есть DTD для OFX 1.03 (их последняя версия несмотря на то, разработала и выпустила 1,60, но я отвлекся ...)Есть ли лучший Regex для разбора DTD

Я хотел бы использовать регулярное выражение, чтобы иметь группы, расщепляющие Субъект, элемент, другие теги в его части для дальнейшей обработки, например, что я бы тег, как это:

<!ENTITY % ACCTTOMACRO "(BANKACCTTO | CCACCTTO | INVACCTTO)"> 

И создать объект, как это

новый EntityTag {строка Name = " % ACCTTOMACRO "; string [] ChildTypes = новая строка [] {"BANKACCTTO", "CCACCTTO", "INVACCTTO"}};

У меня есть регулярное выражение, которое выглядит следующим образом:

Regex re = new Regex(@"<!(\b)+([\s\S])?[^>]+>"); 

Правда, я новичок в регулярных выражений, так что я сделал хорошо до сих пор получаю это, что дает мне коллекцию матча над DTD для каждого тега без комментариев.

Я хотел бы использовать группировку, чтобы облегчить создание ранее упомянутого объекта.

Если я нахожусь на совершенно неправильном пути, пожалуйста, проинструктируйте меня, однако, если вы загрузите этот документ, я думаю, вы можете найти его нестандартным. (Visual studio подбрасывает несколько красных флагов способом форматирования этого документа)

Я не ожидаю, что кто-нибудь пойдёт в беду, но для любопытных здесь link, чтобы скачать спецификации.

ответ

2

Похоже, что у них есть схема. Почему бы не загрузить схему и проанализировать ее с помощью анализатора XML (например, LINQ-to-XML)?

+0

К сожалению, версия 1.03 находится в формате SGML, а не XML, поэтому для ветви версии 1 документа XML-схемы не существует. Это также печально, потому что версия OFX 1.02/1.03 - это то, что я должен реализовать. К счастью, у меня есть рабочий, грубый движок SGMLTag. Теперь я должен проверить его. Извините, если я не определился с вопросом о том, какую версию я использовал. –

+0

Есть бесплатный конвертер DTD-to-schema по адресу http://www.hitsw.com/xml_utilites/ - я не пробовал, но это или что-то подобное может помочь. – TrueWill

+0

ОК .. так что это было время, и теперь я дам вам обновление. Я использую здесь небольшую руку. Я взял спецификацию 2.11 для OFX и использовал xsd.exe для генерации некоторого кода. Я отмечаю, какие элементы соответствуют тем, какие версии используют атрибуты, а затем используют объект промежуточного слоя для обработки форматирования тегов между различными версиями. Хотя ваш ответ на самом деле не остается верным, чтобы сформировать часть регулярного выражения моего вопроса, вы получите флаг ответа для того, чтобы дать мне другое направление, которое сработало! Большое спасибо! –

Смежные вопросы