解析并从文本转换为xml

时间:2010-03-02 17:14:32

标签: java xml text-parsing

我需要将以特定领域语言编写的程序翻译成xml表示。这些程序采用简单的文本文件形式。你建议我采取什么方法?我应该使用什么API:

  1. 解析用该语言编写的文本文件。
  2. 根据我获得的令牌和令牌流编写xml。
  3. 我的标准更多的是快速而简单的开发,而不是内存或计算时间效率。

    非常感谢 科坦

2 个答案:

答案 0 :(得分:2)

这项工作的不太重要的部分是第1步,解析域特定语言(DSL)文本,而不是#2,将其推送到某种XML语言。

希望您能轻松拥有DSL的解析器(显然这种语言必须已经使用某处 ...),您可以将导出/转换逻辑“挂钩”到这个解析器。如果不可能,您需要编写一个新的解析器。

根据DSL的复杂程度,您可以使用基于几个循环和切换案例的简单解析器来编写。 对于更复杂的语言,ANTLR通常是一个不错的选择。简而言之,在Backus Naur形式(BNF,或实际上EBNF,这里,即扩展系列)中形成DSL的语法,并且ANTLR生成一个解析器,用选择目标语言(包括Java)。使用ANTLR的学习曲线是一个需要考虑的因素,但在中等到非常复杂的语言环境中,值得投资。 ANTLR是类似的,但在我看来,它是一个比GNU Bison更好的工具,但是后者也可以做到这一点,同样也需要目标Java。
如果您熟悉其他语言,特别是Python,那么还有许多其他工具可以用于或多或少的ad-hoc解析器;我也使用过PyParsing,很乐意推荐它。

答案 1 :(得分:1)

XStream是Java EVAR的最佳XML序列化器/反序列化器。如果您可以将DSL转换为Java类,那么这是一个很棒的库。