2009-10-16 58 views
0

我已经得到了DTD的OFX 1.03较好的正则表达式(其最新的版本尽管已经开发并发布了1.60,但我离题...)是否有分析DTD

我想用正则表达式来有那一刹那的实体元素,其他标签进入其部分作进一步处理组,使得我拿到一个标签是这样的:

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

,并创建一个对象像这样

新EntityTag {字符串名称=“ %ACCTTOMACRO“; string [] ChildTypes = new string [] {“BANKACCTTO”,“CCACCTTO”,“INVACCTTO”}};

我有一个正则表达式看起来像这样:

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

不可否认,我是新来的正则表达式,所以我做了好为止得到这个,给了我一个匹配集合在没有评论的每个标签的DTD。

我想利用分组来帮助创建前面提到的对象。

如果我在完全错误的道路上,请指导我,但是如果你下载这个文件,我认为你可能会发现它不是标准的。 (视觉工作室用格式化文档的方式抛出一些红旗)

我不指望任何人去麻烦,但对于这里好奇的是link下载规格。

回答

2

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

+0

不幸的是,版本1.03在SGML中不是XML,因此版本1分支中不存在XML模式文档。它也不幸,因为OFX的1.02/1.03版本是我需要实现的。幸运的是,我有一个工作粗糙的SGMLTag引擎。现在我必须验证它。 对不起,如果我不清楚我的问题,我使用的是什么版本。 – 2009-10-16 19:18:45

+0

在http://www.hitsw.com/xml_utilites/处有一个免费的DTD到模式转换器 - 我没有尝试过,但那样或类似的东西可能会有所帮助。 – TrueWill 2009-10-16 21:05:03

+0

行..所以它已经有一段时间了,现在我会给你一个更新。我在这里使用一点点的手。我使用OFX的2.11规范,并使用xsd.exe生成一些代码。我使用属性标记哪些项目符合哪些版本,然后使用中间层对象来处理不同版本之间来回格式化标记。虽然你的回答在我的问题的正则表达式部分并不真正保持真实,但你会得到答案标志,为我提供了一个不同的工作方向!非常感谢你! – 2009-10-23 20:40:58