我需要在Xtext中编写DSL,这将简化一些现有的XML语言。换句话说,我需要编写DSL,然后以某种方式使用Xtext将其转换为XML。到目前为止,我写了一个语法,但我的问题是如何基于它生成XML。你知道如何做类似的任何教程吗?特别是我遇到的问题是,当我创建新的Xtext项目时,它不会生成projectcame.generator项目,如大多数教程所示。
答案 0 :(得分:3)
我假设你使用的是Xtext 2.2。
专用发电机项目被一个发电机取代,该发电机是语言基础设施的一部分。您可能想要深入了解运行时插件中的yourdsl.generator包。在那里,您将找到一个存根实现,它接受EMF资源并允许从中创建文本。 Statemachine示例使用该方法生成Java代码,但您也可以从中生成XML或其他任何内容。
如果您的XML与特定架构匹配,您当然可以将模型转换为目标模型的有效实例,并使用EMF标准功能对其进行序列化,例如: XMLResource.save()。
答案 1 :(得分:0)
理论上,您可以使用JiBX对生成的EMF Java模型进行字节增强,然后使用JiBX映射到所需的XML。但是,对于您的模型而言,这可能有点过分(取决于您的目标文档的复杂程度)。
我必须警告你,我没有在EMF课上做过这件事;我的项目首先将我的EMF模型转换为现有的POJO模型,该模型通过JiBX进行了增强。但假设他们会表现出来,那就应该有效。