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>

Java コードを使用してこのタイプの .xsd ファイルを生成したい..? どうやってやるの。?

特に単純なタイプの要素を生成し、それに制限を加える方法は?

4

4 に答える 4

1

XMLジョブを実行する場合はJAXBを使用することをお勧めします。ただし、通常、XSDファイルは手動で生成され、XMLファイルはXSDファイルを使用してプログラムで生成されます。何を開発しようとしていますか?

于 2012-07-26T10:47:00.643 に答える
1

で始まる整数を表す独自の単純型を作成する代わりに0、既存の型を利用できますxs:nonNegativeInteger。例を挙げて説明します。

スプスレッド

アノテーションを使用し@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;
    }

}

デモ

generateSchemaメソッド onを使用して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;
            }

        });
    }

}

出力

以下は、生成された 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>
于 2012-07-26T14:00:34.023 に答える
0

Java2Schema ツールを使用して Java クラスからスキーマを生成できます。また、JaxB 2.0 を試すこともできます。

于 2012-07-26T10:35:07.533 に答える
0

これを実現するために、任意の XML 処理 API を使用できます。JDOM もその 1 つです。XML にシリアライズする XML スキーマの構築に固有の API が必要な場合は、Eclipse MDT API を確認してください。

于 2012-07-26T10:30:36.493 に答える