Java Architecture for XML Binding (JAXB) ツールを使用して、Java クラスから XML スキーマ・ファイルを生成します。
JAXB API およびツールを使用して、 Java クラスと XML スキーマの間のマッピングを確立します。 XML スキーマ文書は、XML 文書内のデータ・エレメントとリレーションシップを記述します。 データ・マッピングまたはバインディングが存在するようになったら、 XML 文書と Java オブジェクトとの間で双方向に変換できます。 XML 文書に保管されているデータには、XML データ構造を理解していなくてもアクセスすることができます。
Java アプリケーションのデータ・エレメントを表す、既存の Java アプリケーションから XML スキーマ文書を作成できます。それには、JAXB スキーマ・ジェネレーターの schemagen コマンド行ツールを使用します。 JAXB スキーマ・ジェネレーターは、Java ソース・ファイルまたは Java クラス・ファイルのいずれかを処理します。 Java クラス・アノテーションは、既存の Java クラスから生成済みのスキーマ・コンポーネントへのデフォルト・マッピングをカスタマイズする能力を提供します。 XML スキーマ・ファイルとアノテーション付き Java クラスには、マーシャルおよびアンマーシャル用の XML 文書を構文解析するために JAXB ランタイムが必要とするすべての情報が含まれています。
package generated; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; import javax.xml.datatype.XMLGregorianCalendar; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "bookdata", propOrder = { "author", "title", "genre", "price", "publishDate", "description" }) public class Bookdata { @XmlElement(required = true) protected String author; @XmlElement(required = true) protected String title; @XmlElement(required = true) protected String genre; protected float price; @XmlElement(name = "publish_date", required = true) protected XMLGregorianCalendar publishDate; @XmlElement(required = true) protected String description; @XmlAttribute protected String id; public String getAuthor() { return author; } public void setAuthor(String value) { this.author = value; } public String getTitle() { return title; } public void setTitle(String value) { this.title = value; } public String getGenre() { return genre; } public void setGenre(String value) { this.genre = value; } public float getPrice() { return price; } public void setPrice(float value) { this.price = value; } public XMLGregorianCalendar getPublishDate() { return publishDate; } public void setPublishDate(XMLGregorianCalendar value) { this.publishDate = value; } public String getDescription() { return description; } public void setDescription(String value) { this.description = value; } public String getId() { return id; } public void setId(String value) { this.id = value; } }
<?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="bookdata"> <xs:sequence> <xs:element name="author" type="xs:string"/> <xs:element name="title" type="xs:string"/> <xs:element name="genre" type="xs:string"/> <xs:element name="price" type="xs:float"/> <xs:element name="publish_date" type="xs:anySimpleType"/> <xs:element name="description" type="xs:string"/> </xs:sequence> <xs:attribute name="id" type="xs:string"/> </xs:complexType> </xs:schema>
schemagen コマンドについて詳しくは、 JAXB 2.0 Reference implementation のドキュメンテーションを参照してください。