从java对象实例生成XSD的框架

从java对象实例生成XSD的框架,java,jaxb,xsd,Java,Jaxb,Xsd,我需要一些框架来从java对象创建xsd。 我知道jaxb和xstream,但我不需要这些框架,因为这些框架是从java类XSD生成的,但我需要从java XSD实例的值生成。 例如: 我的java类: public class Example { public List<String> elements; } 这是我期望的xsd: <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/

我需要一些框架来从java对象创建xsd。
我知道jaxb和xstream,但我不需要这些框架,因为这些框架是从java类XSD生成的,但我需要从java XSD实例的值生成。
例如:

我的java类:

public class Example {

   public List<String> elements;

}
这是我期望的xsd:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">

<xs:element name="something">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="a" type="xs:string"/>
      <xs:element name="b" type="xs:string"/>
      <xs:element name="c" type="xs:string"/>
     </xs:sequence>
  </xs:complexType>
</xs:element>


您可以使用Maven工具

简单例子

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <version>1.5</version>
    <executions>
        <execution>
            <id>schema1-xjc</id>
            <goals>
                <goal>xjc</goal>
            </goals>
            <configuration>
                <schemaFiles>schema1.xsd</schemaFiles>
                <packageName>com.example.foo</packageName>
                <staleFile>${project.build.directory}/jaxb2/.schema1XjcStaleFlag</staleFile>
            </configuration>
        </execution>
    </executions>
</plugin>  

org.codehaus.mojo

您可以使用Maven工具

简单例子

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <version>1.5</version>
    <executions>
        <execution>
            <id>schema1-xjc</id>
            <goals>
                <goal>xjc</goal>
            </goals>
            <configuration>
                <schemaFiles>schema1.xsd</schemaFiles>
                <packageName>com.example.foo</packageName>
                <staleFile>${project.build.directory}/jaxb2/.schema1XjcStaleFlag</staleFile>
            </configuration>
        </execution>
    </executions>
</plugin>  

org.codehaus.mojo

您需要的不是XJC,而是一个不同的JAXB工具,即schemagen。 它的用法非常简单,解释也很清楚

作为一个例子,我尝试了以下方法:

Example.java

@XmlType(namespace=Namespaces.SOME_namespace,
比例={“a”、“b”、“c”})
@XmlAccessorType(XmlAccessType.FIELD)
公开课范例{
@XmlElement(必需=true,defaultValue=“requiredElementValue”)
私人字符串a;
@XmlAttribute(必需=true)
私有字符串b;
@XmlAttribute(必需=false)
私有字符串c;
}
pom.xml的相关部分


org.codehaus.mojo
jaxb2 maven插件
1.5
schemagen
schemagen
http://some/namespace
一些
myschema.xsd
**/*.爪哇
和输出->myschema.xsd


您需要的不是XJC,而是一个不同的JAXB工具,即schemagen。 它的用法非常简单,解释也很清楚

作为一个例子,我尝试了以下方法:

Example.java

@XmlType(namespace=Namespaces.SOME_namespace,
比例={“a”、“b”、“c”})
@XmlAccessorType(XmlAccessType.FIELD)
公开课范例{
@XmlElement(必需=true,defaultValue=“requiredElementValue”)
私人字符串a;
@XmlAttribute(必需=true)
私有字符串b;
@XmlAttribute(必需=false)
私有字符串c;
}
pom.xml的相关部分


org.codehaus.mojo
jaxb2 maven插件
1.5
schemagen
schemagen
http://some/namespace
一些
myschema.xsd
**/*.爪哇
和输出->myschema.xsd



<>代码>如果你发现其中一个答案是有用的,请考虑相应地对它们进行标记。或者评论为什么不。如果你发现其中一个答案有用,请考虑相应地对它们进行标记。或者评论why not.Downvoted,因为这个答案涉及为现有XSD生成Java文件,而(无可否认的)问题是如何为现有Java文件生成XSD。Schemagen最终成为了解决方案。投票被否决,因为这个答案涉及为现有XSD生成Java文件,而(无可否认的)问题是如何为现有Java文件生成XSD。Schemagen最终成为了解决方案。