1

我需要在 Xtext 中编写一个 DSL,这将简化一些现有的 XML 语言。换句话说,我需要编写 DSL,然后使用 Xtext 以某种方式将其转换为 XML。到目前为止我写了一个语法,但我的问题是如何基于它生成一个XML。你知道任何关于如何做类似事情的教程吗?特别是当我创建新的 Xtext 项目时,它不会生成 projectcame.generator 项目,如大多数教程中所示。

4

2 回答 2

3

我假设您使用的是 Xtext 2.2。

专用生成器项目被直接作为语言基础设施一部分的生成器所取代。您可能想深入了解运行时插件中的 yourdsl.generator 包。在那里您会发现一个存根实现,它采用 EMF 资源并允许从中创建文本。Statemachine 示例使用该方法生成 Java 代码,但您也可以生成 XML 或任何您想要的内容。

如果您的 XML 与特定模式匹配,您当然可以将模型转换为目标模型的有效实例,并使用 EMF 标准功能将其序列化,例如 XMLResource.save()。

于 2012-05-23T07:22:59.857 回答
0

理论上,您可以使用 JiBX 对生成的 EMF Java 模型进行字节增强,然后使用 JiBX 映射到所需的 XML。不过,这对您的模型来说可能是多余的(这取决于您的目标文档的复杂程度)。

我必须警告你,我没有在 EMF 课程上这样做过;我的项目首先将我的 EMF 模型转换为现有的 POJO 模型,该模型通过 JiBX 进行了增强。但假设他们会表现,它应该工作。

于 2012-05-23T21:25:21.123 回答