从XML自动生成Java Skeleteon类

时间:2014-07-17 08:38:32

标签: java xml xsd xjc auto-generate

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

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

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

感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

在解析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);

答案 1 :(得分:0)

如果从xml生成xsd,则可以使用jaxb或visual studio生成类。这在另一个问题中讨论。在这里阅读:

答案 2 :(得分:0)

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

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 ");

等等