从XSD和数据生成XML,同时跳过生成类

时间:2012-03-08 11:11:58

标签: java xml xsd xml-generation

我有以下重复出现的模式:我用一些参数调用一个黑盒子,得到的结果是List<Map<String, Object>>(或等效的),其中每个Map都有相同的keySet。然后,我希望生成

形式的XML
<list>
    <item key1='value1' ...>
        <keyX>valueX</keyX>
    </item>
</list>

列表和项目元素的名称以及某个键是否属于项目的子元素或属性因个别任务而异。我想最大限度地减少Map键到XML的手工连接。

我最初想象的方式是创建一个XML模板,用于描述元素/属性映射的映射键。然后我认为这就是XSD的用途,所以我可以用这种格式来定义模板。但是我找不到从XSD生成XML的好方法。我看了一下JAXB,它对于我的场景来说似乎太重了:我不需要Java类 - 拥有域对象会很好,除了我从不对数据做任何事情。然后,我必须首先将我的数据映射到类,这似乎是低效率的事情,只需用marshaller转储它们。第二,我想保持更大的灵活性 - 如果数据格式(即每个Map中的keySet)发生变化,我只需要修改模式而不是重新生成源并重建。

感谢阅读:)

1 个答案:

答案 0 :(得分:0)

我记得大约一年前做过这样的事情。我所做的是写和XSLT,它接受了一些参数并用JAXP处理它以生成XML。

如果您是XSL的新手,可能会有点棘手,但周围有很多好的文档。 :)