的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>
这是伟大的 - 但我挣扎of.createGreetings一点 - 不能缝找到一种方法来创建正确的格式:( – Joe 2013-04-19 14:24:02
这可能是因为该格式。 XSD本身。你只是复制并粘贴它?您应该验证格式是否正确。尝试使用XML间谍或XML编辑器来验证它是否正确。 – 2013-04-20 01:25:09
Pefect - 但我不能给你赏金 - 按钮哪里去了? – Joe 2013-04-21 13:09:53