2009-09-29 107 views
1

我需要使用内置的java org.w3c.dom或符合一组XSD文件的jdom包来创建XML文档。 XSD文件相似但不相同。实质上,我需要根据动态给予我的XSD创建XML文件。使用XSD以编程方式创建XML文档

什么是最好的方式来做到这一点。我已经检查过Validator包,它没有任何特性,如给定上下文节点上的可能元素的向前看或迭代器。

理想情况下,我正在寻找一种SAX类型的架构,当我被要求以上下文自由的方式提供时,我实现了一个元素。发动机应该组装并在最后给我dom树。

这个车轮是否已经发明了?

谢谢..

回答

1

org.w3c.dom对XML架构的支持。对于JDom,可以使用模式验证的一个文件,但不支持构建文件。

你有两个选择:

  1. 使用JDOM读取架构,分析,并根据该XML文档生成一个文件(的模式始终是一个有效的XML文档,太)。

  2. 您可以使用像Castor这样的XML映射器。 Castor可以读取Schema并生成一组Java类,使您可以生成与所述模式匹配的文档。

后一种方法可能不会工作你的情况这么好,因为除非它们是同一个文件中定义蓖麻会产生类似的XSD结构不同的Java类,所以你不能轻易重用的通用代码。解决方法是让Castor生成代码,然后编写脚本或类似代码将XSD的公共部分复制/合并到同一个Java包中。

+0

感谢您的回复。我熟悉蓖麻,所以我相当肯定它不适合我的要求。也许JDom是要走的路。 我很好奇NetBeans插件,XMLSpy,Oxygen等XML编辑器如何能够提供上下文敏感的提示和预见。我希望有一个开源的库/项目可以做到这一点。 – 2009-09-29 20:12:57

+0

获取Netbeans或Eclipse XML编辑器的源代码并查看是没有问题的。 – 2009-09-30 07:22:33

1

我目前正在解析一个XSD,并且不是创建一个XML文档,而是创建其他部分。我发现XSOM非常有用。看看this简短的小教程,因为它不是很明显,如何马上使用它。

一旦你掌握了它,库本身并不难使用,并且你可以获得XSD中的所有信息,即可用于生成XML文件的属性,限制和元素。

+0

谢谢,这与我所寻找的非常接近。 – 2009-11-18 03:56:58