İlk üretilen hiçbir iç sınıflar vardır böylece şema break up sağlar:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="root" type="Root" />
<xs:complexType name="Root">
<xs:sequence>
<xs:element name="items" type="Items" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="Items">
<xs:sequence>
<xs:element name="item" type="xs:string" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:schema>
Yine de tek bir dosyada değil, yalnızca ekstra sınıflar alacaksınız. Artık, jaxb-xew-plugin
'u kullanmak için derlemenize bir bölüm eklemek istiyorsunuz. Benim için bu görünüyor yüzden, Maven kullanmak gibi:
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.8.2</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<args>
<arg>-no-header</arg>
<arg>-Xxew</arg>
<arg>-Xxew:instantiate lazy</arg>
<arg>-Xxew:delete</arg>
</args>
<plugins>
<plugin>
<groupId>com.github.jaxb-xew-plugin</groupId>
<artifactId>jaxb-xew-plugin</artifactId>
<version>1.0</version>
</plugin>
</plugins>
</configuration>
</execution>
</executions>
</plugin>
Eğer oluşturulan sınıfları da silme nerede Geçenlerde sabit bir hata var gibi -Xxew:delete
bayrağını kapalı bırakın, paket isimleri var ki ad alanlarını kullanarak başlatırsanız nesneler olmamalıdır. Alternatif olarak, kodu github'dan alabilir ve 1.1-SNAPSHOT olarak kullanabilirsiniz. ,
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Root", propOrder = {
"items"
})
public class Root {
@XmlElementWrapper(name = "items", required = true)
@XmlElement(name = "item")
protected List<String> items;
public List<String> getItems() {
if (items == null) {
items = new ArrayList<String>();
}
return items;
}
public void setItems(List<String> items) {
this.items = items;
}
}
Thomas teşekkür ederim: Ben olsun bunu yaparken
kod ben aradığınız düşünüyorum üretti. Bu bağlantı, bu konu hakkında gördüğüm ilk uygun içeriktir. – mahonyaBu eklentiyi kullanmak için bir süredir çalışıyorum ama boşuna. Xjc 2.2.4 ile uyumlu olup olmadığından emin değilim (şu anda sahip olduğum şey). Ayrıca, jaxb-xjc.jar (xjc, JDK7'nin araçlarının bir parçası) yok. Sonunda komut satırından xjc'yi aramak istiyorum ve herkes nasıl yapılacağı konusunda çok iyiydi ([Kohsuke Kawaguchi] (http://weblogs.java.net/blog/kohsuke/archive/2005/06/writing_a_plugi.html)) "Komut satırından da yapabilirsin, ama çok hoş değil." diyor. Neden bir jaxb'e sahip olamıyoruz: xjc'yi bir seviyeye "atlamak", yani sadece bir '@ XmlElementWrapper' oluşturmak için açıklama mı? –
Cevabımın iki yıl önce olduğunu hatırlıyorum - eklentiyi daha sonra kullandım ve iyi çalıştı, ancak şu an modası geçmiş olabilir. – Thomas