java - 如何使用java代码生成xsd文件?

标签 java xsd jaxb

<complexType name="spThread">
        <sequence>
            <element name="SPThreadID" type="int" />
            <element name="durtime" minOccurs="0" default="0">
                <simpleType>
                    <restriction base="int">
                        <minInclusive value="0" />
                    </restriction>
                </simpleType>
            </element>
            <element name="minexecutions" minOccurs="0" default="0">
                <simpleType>
                    <restriction base="int">
                        <minInclusive value="0" />
                    </restriction>
                </simpleType>
            </element>
            <element name="numThreads" type="int" />
            <element name="procedures" type="spm:procedure" minOccurs="1"
                maxOccurs="unbounded" />
        </sequence>
    </complexType>

我想使用 Java 代码生成这种类型的 .xsd 文件..?我该怎么做。?

具体如何生成Simple类型元素并对其进行限制?

最佳答案

您可以利用现有的 xs:nonNegativeInteger 类型,而不是创建您自己的简单类型来表示以 0 开头的整数。我将举例说明。

Sp线程

您可以使用 @XmlSchemaType 注释指定应在 XML 模式中为字段/属性生成什么类型​​。

package forum11667335;

import javax.xml.bind.annotation.XmlSchemaType;

public class SpThread {

    private int durTime;

    @XmlSchemaType(name="nonNegativeInteger")
    public int getDurTime() {
        return durTime;
    }

    public void setDurTime(int durTime) {
        this.durTime = durTime;
    }

}

演示

您可以在 JAXBContext 上使用 generateSchema 方法来生成 XML 模式:

package forum11667335;

import java.io.IOException;
import javax.xml.bind.*;
import javax.xml.transform.Result;
import javax.xml.transform.stream.StreamResult;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(SpThread.class);

        jc.generateSchema(new SchemaOutputResolver() {

            @Override
            public Result createOutput(String namespaceUri, String suggestedFileName) throws IOException {
                StreamResult result = new StreamResult(System.out);
                result.setSystemId(suggestedFileName);
                return result;
            }

        });
    }

}

输出

下面是生成的 XML 架构。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="spThread">
    <xs:sequence>
      <xs:element name="durTime" type="xs:nonNegativeInteger"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

关于java - 如何使用java代码生成xsd文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11667335/

相关文章:

java - 如何停止 future 的超时

java - 将多个 TextView 保存为高分辨率图像

xml - 独特的粒子违规

xsd - 帮助自引用 XSD 生成循环引用

java - 如何生成一个类,从中我可以检索节点的 XML 作为字符串

java - 如何使用 JAXB 注释将此 XML 转换为 Java 对象?

java - 无法理解java中的错误

java - Spring 数据和锁定

xsd - DTD 或 XML 架构。哪一个更好?

java - 解码时忽略命名空间 : JAXB