2013-02-12 59 views
2

看着http://www.eclipse.org/modeling/mdt/?project=xsd#xsd。我們有以下文本:Eclipse - XML模式定義

「XML Schema Definition是一個參考庫,它提供了一個API,可用於檢查,創建或修改W3C XML Schema的任何代碼(獨立或作爲其他工件的一部分,如XForms或WSDL文件)。」

從這裏我明白我可以編寫一個使用'XML Schema Definition'API創建XML文件的java類,並且這個創建的XML文件可以供給像EMF等工具上。假設我的理解是正確的(如果不是,請告訴我怎麼做),我會去哪裏找到這樣一個java類的「hello world」類型的例子?

回答

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> 

+0

這是偉大的 - 但我掙扎of.createGreetings一點 - 不能縫找到一種方法來創建正確的格式:( – Joe 2013-04-19 14:24:02

+0

這可能是因爲該格式。 XSD本身。你只是複製並粘貼它?您應該驗證格式是否正確。嘗試使用XML間諜或XML編輯器來驗證它是否正確。 – 2013-04-20 01:25:09

+0

Pefect - 但我不能給你賞金 - 按鈕哪裏去了? – Joe 2013-04-21 13:09:53