【问题标题】:XML Data modeling toolsXML 数据建模工具
【发布时间】:2012-11-02 02:29:52
【问题描述】:

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

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

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

【问题讨论】:

    标签: xml data-modeling


    【解决方案1】:

    如果您正在使用 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 sn-p 的 元素,您将使用大致如下所示的代码进行访问:

     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 生成 Java 类XML 消息或 WSDL。

    【讨论】:

    • 这回答了我的问题。我想我将使用 XMLBeans。更多谷歌搜索告诉我还有 JAXB 2,想知道哪个更好。
    • 似乎围绕这个问题的讨论/问题也已经发生:stackoverflow.com/questions/1362030/jaxb-vs-apache-xmlbeans 有些人更喜欢 JAXB 2,因为它是原生 Java,但有些人仍然发现 XMLBeans 用于一些小的性能改进和附加功能,它真的是一个个人喜好问题,您是否认为值得使用外部 3rd 方库。如果我有一个小型个人项目,我几乎总是使用 XMLBeans,但如果它是一个更大的复杂企业项目,我可能会在添加依赖项之前三思而后行,然后坚持使用 JAXB。
    猜你喜欢
    • 2010-12-09
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多