2

http://www.eclipse.org/modeling/mdt/?project=xsd#xsdを見てください。テキストがあります:

「XML スキーマ定義は、W3C XML スキーマ (スタンドアロンまたは XForms や WSDL ドキュメントなどの他のアーティファクトの一部として) を調査、作成、または変更するコードで使用するための API を提供する参照ライブラリです。」

このことから、「XML Schema Definition」API を使用して XML ファイルを作成する Java クラスを作成できること、およびこの作成された XML ファイルを EMF などのツールにフィードできることがわかりました。私の理解が正しいと仮定すると (そうでない場合は、その方法を教えてください)、そのような Java クラスの「hello world」タイプの例をどこで見つけることができますか?

4

1 に答える 1

3

XSD:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
     jxb:version="2.0">

  <xsd:element name="Greetings" type="GreetingListType"/>
  <xsd:complexType name="GreetingListType">
     <xsd:sequence>
       <xsd:element name="Greeting" type="GreetingType"
             maxOccurs="unbounded"/>
     </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="GreetingType">
    <xsd:sequence>
      <xsd:element name="Text" type="xsd:string"/>
    </xsd:sequence>
    <xsd:attribute name="language" type="xsd:language"/>
  </xsd:complexType>

</xsd:schema>

Java クラス:

import java.util.*;
import javax.xml.bind.*;
import hello.*;

public class Hello {

private ObjectFactory of;
private GreetingListType grList;

public Hello(){
    of = new ObjectFactory();
    grList = of.createGreetingListType();
}

public void make( String t, String l ){
    GreetingType g = of.createGreetingType();
    g.setText( t );
    g.setLanguage( l );
    grList.getGreeting().add( g );
}

public void marshal() {
    try {
        JAXBElement<GreetingListType> gl =
            of.createGreetings( grList );
        JAXBContext jc = JAXBContext.newInstance( "hello" );
        Marshaller m = jc.createMarshaller();
        m.marshal( gl, System.out );
    } catch( JAXBException jbe ){
        // ...
    }
}

}

例:

Hello h = new Hello();
h.make( "Bonjour, madame", "fr" ); 
h.make( "Hey, you", "en" ); 
h.marshal();

出力:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Greetings>
<Greeting language="fr">
<Text>Bonjour, madame</Text>
</Greeting>
<Greeting language="en">
<Text>Hey, you</Text>

于 2013-04-15T14:10:18.297 に答える