C# 有更好的正则表达式来解析DTD吗

C# 有更好的正则表达式来解析DTD吗,c#,regex,grouping,dtd,ofx,C#,Regex,Grouping,Dtd,Ofx,我有OFX1.03的DTD(他们的最新版本尽管已经开发并发布了1.60,但我离题了…) 我希望使用regex来创建组,这些组将实体、元素和其他标记拆分为各个部分以进行进一步处理,这样我就可以获得如下标记: <!ENTITY % ACCTTOMACRO "(BANKACCTTO | CCACCTTO | INVACCTTO)"> Regex re = new Regex(@"<!(\b)+([\s\S])?[^>]+>"); 然后创建一个像这样的对象 新的

我有OFX1.03的DTD(他们的最新版本尽管已经开发并发布了1.60,但我离题了…)

我希望使用regex来创建组,这些组将实体、元素和其他标记拆分为各个部分以进行进一步处理,这样我就可以获得如下标记:

<!ENTITY % ACCTTOMACRO "(BANKACCTTO | CCACCTTO | INVACCTTO)">
Regex re = new Regex(@"<!(\b)+([\s\S])?[^>]+>");  

然后创建一个像这样的对象

新的EntityTag{string Name=“%AcctMacro”;string[]ChildTypes=新字符串[]{“BANKACCTTO”、“CCACCTTO”、“Invaccctto”}

我有一个正则表达式,如下所示:

<!ENTITY % ACCTTOMACRO "(BANKACCTTO | CCACCTTO | INVACCTTO)">
Regex re = new Regex(@"<!(\b)+([\s\S])?[^>]+>");  
Regex re=newregex(@“]+>”);
不可否认,我对regex是新手,所以到目前为止,我做得很好,它为每个标记在DTD上提供了一个匹配集合,没有任何注释

我想利用分组来促进前面提到的对象的创建

如果我完全走错了路,请告诉我,但是如果你下载了这个文档,我想你可能会发现它不是标准的。(Visual studio对此文档的格式化方式发出了一些危险信号)


我不希望任何人会遇到麻烦,但对于好奇的人来说,这里是下载规范的好机会。

看起来他们也有可用的模式。为什么不下载模式并用XML解析器(例如,LINQ to XML)解析呢?

不幸的是,1.03版是SGML而不是XML,因此版本1分支不存在XML模式文档。这也很不幸,因为我需要实现OFX的1.02/1.03版本。幸运的是,我有一个工作,粗糙的SGMLTag引擎。现在我必须验证它。很抱歉,如果我不清楚我使用的是什么版本,我会很抱歉。在-有一个免费的DTD到模式转换器,我还没有尝试过,但这或类似的东西可能会有所帮助。好的。。已经有一段时间了,现在我会给你一个更新。我在这里用了一点手。我采用了OFX的2.11规范,并使用xsd.exe生成了一些代码。我使用属性标记哪些项目与哪些版本兼容,然后使用中间层对象处理在不同版本之间来回格式化标记。虽然你的答案在我的问题的正则表达式部分并不真实,但你得到了答案标志,因为它给了我一个不同的方向!多谢各位@福克斯特罗-很高兴我能帮上忙。