Powiel możliwe:
jaxb xjc mapping to existing domain objectsJAX-B - Jak zmapować elementu schematu do istniejącej klasy Javy
Używam JAX-B do generowania klas Java z schematu XML .
Jest jeden element w moim schemacie, który chciałbym powiązać z klasą Java istniejącą w moim projekcie. Moje powiązanie jest wykonywane w pliku .xjb. Próbowałem kilku podejść, ale nie mogę uzyskać niczego do pracy.
Czy to możliwe? Jeśli tak, w jaki sposób?
Oto przykład mniejszy od mojego problemu:
Moja istniejącej klasy Java:
package com.existing;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
public class Existing {
private String prop;
public String getProp() { return prop; }
public void setProp(String prop) { this.prop = prop; }
}
moim schemacie:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.baloiselife.com/xpression/policy"
xmlns="http://www.baloiselife.com/xpression/policy" >
<xs:element name="root_node">
<xs:complexType>
<xs:sequence>
<xs:element name="some_other_propery" type="xs:string"/>
<!-- I want this element to map onto my existing Java class -->
<xs:element name="special_element" type="existing_type" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- I want this element to be ignored, and instead my Java class used -->
<xs:complexType name="existing_type">
<xs:sequence>
<xs:element name="prop" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
Więc jakieś pomysły co my wiążących powinno być? Próbowałem użyć ustawienia jxb: class, ale nie mogłem go uruchomić. Mój końcowy wynik ma dwa wymagania:
- Klasa ExistingType jest nie generowany ze schematu
- Klasa Rootnode ma element typu istniejących, który mapuje do mojego istniejącego klasy Javy
Dzięki Blaise. Wygląda na to, że atrybut ref został dodany ze schematem 2.1 jxb, a moje IDE używało starszego ... Więc nie widziałem tej opcji! Teraz wszystko działa świetnie. –