Вопрос по xsd, java, jaxb – Как сгенерировать файл xsd, используя код Java?

2
<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>

я хочу сгенерировать этот тип файла .xsd, используя код Java ..? Как я могу это сделать.?

Специально, как сгенерировать простые элементы типа и наложить на него ограничения?

У меня есть Jaxb аннотированные Java-классы для создания схемы ManthanB
Каков источник схемы? Вы пишете инструмент с графическим интерфейсом, который используется для создания схем? Или только некоторые части вышеуказанного XML-динамические? Rajesh J Advani

Ваш Ответ

4   ответа
1

которые вы делаете. Но обычно XSD-файлы генерируются вручную, а затем XML-файлы создаются программно с использованием XSD-файлов. Что вы пытаетесь развивать?

1

чтобы создавать свой собственный простой тип для представления целых чисел, начиная с0Вы могли бы использовать существующиеxs:nonNegativeInteger тип. Я продемонстрирую на примере.

SpThread

Вы можете использовать@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;
    }

}

Demo

Вы можете использоватьgenerateSchema метод наJAXBContext создать схему 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;
            }

        });
    }

}

Output

Ниже приведена схема 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>
0

яется одним из них. Если вам нужен API, специфичный для построения XML-схем, которые вы затем сериализуете в XML, вы можете попробоватьEclipse MDT API.

Привет, Марко, я занимаюсь чтением и написанием XML с использованием jaxb, так есть ли какой-нибудь aanotaton или какой-либо другой способ создания схемы вышеупомянутого типа? ManthanB
schemagen инструмент, кажется, то, что вы ищете.
0

лассов Java, а также вы можете попробовать JaxB 2.0

Похожие вопросы