【问题标题】:Auto Generate Java Skeleteon Class from XML从 XML 自动生成 Java 骨架类
【发布时间】:2014-09-08 00:55:12
【问题描述】:

我有一个看起来有点像这样的 xml 文件:

<Model>
    <Class name="">
        <Attribute name="" type =""/>
        <Attribute\>
        <Method name="" returnType=""/>
    </Class>
</Model>

我想知道如何从 xml 生成 Java/C++ 类。我尝试过使用 xjc(使用 AltovaXmlSpy 生成模式),但我得到的输出为每个类、属性和方法创建一个类,而不是将方法和属性放在类中。

感谢任何帮助。

【问题讨论】:

  • 你可以制作自己的java代码,你可以使用jaxb来读取你的xml文件并做一些转换代码来用你的xml到java代码写入文件,或者制作一些xsd并使用自动生成与 xjc

标签: java xml xsd xjc auto-generate


【解决方案1】:

使用此代码获取类名和属性名

NodeList stdCol = doc.getElementsByTagName("Model");

      for(int s=0; s<stdCol.getLength() ; s++){
          Element el = (Element)stdCol.item(s);
          NodeList stdClass  = el.getElementsByTagName("Class ");
          for(int k=0; k<stdClass .getLength() ; k++){
              Element mapEntry = (Element)stdClass .item(k);
              NodeList stdAttribute  = mapEntry.getElementsByTagName("Attribute ");

等等

【讨论】:

    【解决方案2】:

    如果您从 xml 生成 xsd,则可以使用 jaxb 或 Visual Studio 生成类。这在另一个问题中讨论。在此处阅读:

    【讨论】:

      【解决方案3】:

      在解析 XML 的同时使用CodeModel 构建类,然后将其输出到文件中。保证编译(并且,如果它失败,有意义的错误!)。

      Maven 依赖:

             <dependency>
                  <groupId>com.sun.codemodel</groupId>
                  <artifactId>codemodel</artifactId>
                  <version>2.6</version>
             </dependency>
      

      示例用法:

      JCodeModel cm = new JCodeModel();
      JDefinedClass clazz = cm._class("my.package.MyClass");
      JMethod method = clazz.method(JMod.PUBLIC, typeOfReturn, "nameOfMethod");
      JBlock body = method.body();
      // ... add fields, methods, set return types, ... 
      
      // write all in-memory classes to file, with import-blocks and everything
      cm.build(destinationDirectory);
      

      【讨论】:

        猜你喜欢
        • 2011-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-21
        • 2016-02-25
        • 2016-10-01
        • 1970-01-01
        • 2014-07-16
        相关资源
        最近更新 更多