2013-02-12 53 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