2012-10-31 49 views
0

我想从我为Java应用程序编写的XML中创建模型类。 什么是一些好的工具从我写的XML转换自动生成的类? 来自我的XML文件的示例。XML数据建模工具

<list name="NameValuePairListDefinition"> 
    <member target="NameValuePair" /> 
    </list> 

    <structure name="PositiveIntegerList"> 
    <member name="list" target="PositiveIntegerListDefinition" /> 
    </structure> 

回答

2

如果您正在使用Java并想要生成类,我会强烈建议使用XMLbeans。它配备了一些不错的实用工具,包括:

  • inst2xsd:给出的XML,它生成XSD

    inst2xsd -enumerations never message.xml

    (会生成XSD文件,并禁用任何枚举相同类型)

  • SCOMP:编译架构成罐子文件,这意味着它产生一个相当不错的可重复使用的库您包含基于该架构的命名空间的类(或多个类)(或noNamespace.something开始)如果你没有定义任何在你的XML

    scomp -jar yourschema mySchema.xsd

    (产生xmltypes.jar - 这是你想要的jar,只是其重命名为一些聪明和使用对于双人房,方法解析为获得&设定,阅读&写值)

  • 最后,只需启动你的Java IDE,并添加所有XMLBeans的JAR和JAR由SCOMP

然后,您可以创建您的架构用你的xmldata加载,创建,存储和操作,因为它只是项目中的java对象;-)

基于你的小XML片段的元素,你会访问wi看起来届代码大致如下:

MyModel myModel = null; 
try { 
    //full path to XML file 
    File modelXML = new File("Model.xml"); 

    // Bind the incoming XML to an XMLBeans type. 
    myModel = MyModel.Factory.parse(modelXML); 
} 
catch (XmlException e) { e.printStackTrace(); } 
catch (IOException e) { e.printStackTrace(); } 
catch (FileNotFoundException e) { e.printStackTrace(); } 

// Using the <structure> element. 
Structure structure = myModel.getStructure(); 
Member member = structure.getMember(); 
String target = member.getTarget(); // "PositiveIntegerListDefinition" 

注:东西我也建议使用未保留的Java关键字,如列表元素名称,我不能完全肯定的XMLBeans将如何应对但我认为它会稍微重新命名而不是重载。

这里是一个完整的教程,可以派上用场: http://xmlbeans.apache.org/documentation/tutorial_getstarted.html

我让你使用的是简单直接的XML调用或基于REST的Web服务的假设,但如果你决定要更详细的使用像SOAP有也可以从Apache CXFApache Axis2中很容易地从SOAP XML消息或WSDL生成Java类。

+0

这回答我的问题。我想我将会使用XMLBeans。更多的Google搜索告诉我还有JAXB 2,想知道哪个更好。 – Vineet

+0

似乎围绕这个已经发生的讨论/问题太:http://stackoverflow.com/questions/1362030/jaxb-vs-apache-xmlbeans 有些人更喜欢JAXB 2,因为它是本地Java,但仍有一些人可以用于XMLBeans的一些次要的性能改进和附加功能,它的确是个人喜好的问题,您是否认为其值得使用外部第三方库。如果我有一个小型的个人项目,我几乎总是会使用XMLBeans,但是如果它是一个更大的复杂企业,我可能会在添加依赖关系之前考虑三次,并坚持使用JAXB。 – bcmoney