从java类生成xsd的实用程序

时间:2012-03-13 09:28:37

标签: java xsd

我想为以下类生成xsd

public class Node{
  private String value;
  private List<Node> childrens;

}

为此类代码生成xsd架构的最佳实用程序是什么

总的来说,我想实现简单的树。我已经在使用jaxb从schema中生成类。

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

如果您使用的是Eclipse IDE,则可以按照此官方文档中的步骤进行操作:

Generating Schema from Classes

  1. 从导航器或项目资源管理器中,选择“文件”>“新建”>“其他”。出现“选择向导”对话框。
  2. 从JAXB类中选择“ JAXB”>“架构”,然后单击“下一步”。出现“从JAXB类生成向导”的“从类生成模式”页面。
  3. 选择要从中生成架构的项目,程序包或类,然后单击“完成”。

答案 2 :(得分:0)

  

还有一些Ant任务和Maven插件可以自动完成这些任务。

是的,确实有。在您亲自弄清楚之前,这里是Maven版本:

(1)将Maven插件添加到您的pom.xml

<build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jaxb2-maven-plugin</artifactId>
                <version>2.4</version>
                <executions>
                    <execution>
                        <id>schemagen</id>
                        <goals>
                            <goal>schemagen</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- Renaming default 'schema1.xsd' -->
                    <transformSchemas>
                      <transformSchema>
                        <uri>http://www.your.url/namespace/foo</uri>
                        <toFile>your-schema-name.xsd</toFile>
                      </transformSchema>
                    </transformSchemas>
                </configuration>
            </plugin>
            ...
        <plugins>       
<build>

(2)添加包裹信息(可选)类:

package-info.java到您的(java)软件包。该文件包含程序包名称:

@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.your.url/namespace/foo", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package url.your.namespace.foo;

(3)将XML注释添加到您的类中,例如

@XmlRootElement(name = "Container")
@XmlAccessorType(XmlAccessType.FIELD)
public class Container {

  @XmlElement(name = "Info", required = true)
  private Info info;
  @XmlElement(name = "Unit")
  private Unit unit;
...}

然后,您只需要执行maven构建,然后在目标文件夹中将找到xsd文件。