XML数据建模工具

时间:2012-10-31 01:49:33

标签: xml data-modeling

我想从我为Java应用程序编写的XML中创建模型类。 从我正在编写的XML转换自动生成的类有哪些好工具? 来自我的XML文件的示例。

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

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

1 个答案:

答案 0 :(得分:2)

如果您正在使用Java并想要生成类,我强烈建议您使用XMLbeans。它带有一些不错的实用程序,包括:

  • inst2xsd :给定xml,它会生成xsd

    示例

    inst2xsd -enumerations never message.xml

    (将生成xsd文件并禁用任何相同类型的枚举)

  • scomp :将架构编译成 jar 文件,这意味着它会为您生成一个非常好的可重用库,其中包含一个类(或多个类)如果您没有在XML中定义任何内容,则基于模式的命名空间(或以 noNamespace.something 开头)

    实施例

    scomp -jar yourschema mySchema.xsd

    (创建 xmltypes.jar - 这是你想要的jar,只需将其重命名为聪明的东西并将其用于双向解析以获取&amp;设置,读取和写入值)

  • 最后,只需启动您的java IDE并为 scomp

  • 创建的架构添加所有xmlbeans JARS和JAR

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

根据您的小型XML代码段的 元素,您将使用大致如下的代码进行访问:

 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关键字,例如 list ,我不确定XMLBeans将如何处理它,但我假设它会或者重命名而不是重载。

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

我假设您使用的是简单的直接XML调用或基于REST的Web服务,但如果您决定使用类似SOAP的更冗长的内容,还可以轻松生成Apache CXFApache Axis2 SOAP XML消息或WSDL中的Java类。