0

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

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

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

1 回答 1

2

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

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

    例子

    inst2xsd -enumerations never message.xml

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

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

    例子

    scomp -jar yourschema mySchema.xsd

    (创建xmltypes.jar - 这是您想要的 jar,只需将其重命名为聪明的名称,然后将其用于获取和设置、读取和写入值的双向解析)

  • 最后,只需启动您的 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 类。

于 2012-10-31T02:11:00.393 回答