JAXBはXMLアダプタを使用してこのケースをサポートできます。あなたはノーゼロ引数のコンストラクタで次のオブジェクトを持って考えてみましょう:
package blog.immutable;
public class Customer {
private final String name;
private final Address address;
public Customer(String name, Address address) {
this.name = name;
this.address = address;
}
public String getName() {
return name;
}
public Address getAddress() {
return address;
}
}
あなたは、単にこのクラスのマッピング可能なバージョンを作成する必要があります。
package blog.immutable.adpater;
import javax.xml.bind.annotation.XmlAttribute;
import blog.immutable.Address;
public class AdaptedCustomer {
private String name;
private Address address;
@XmlAttribute
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
そして、それらの間で変換するXMLアダプタ:
を
: Customerクラスを参照してくださいプロパティのその後
package blog.immutable.adpater;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import blog.immutable.Customer;
public class CustomerAdapter extends XmlAdapter<AdaptedCustomer, Customer> {
@Override
public Customer unmarshal(AdaptedCustomer adaptedCustomer) throws Exception {
return new Customer(adaptedCustomer.getName(), adaptedCustomer.getAddress());
}
@Override
public AdaptedCustomer marshal(Customer customer) throws Exception {
AdaptedCustomer adaptedCustomer = new AdaptedCustomer();
adaptedCustomer.setName(customer.getName());
adaptedCustomer.setAddress(customer.getAddress());
return adaptedCustomer;
}
}
、単に@XmlJavaTypeAdapterアノテーションを使用より詳細な例については
package blog.immutable;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import blog.immutable.adpater.CustomerAdapter;
@XmlRootElement(name="purchase-order")
public class PurchaseOrder {
private Customer customer;
@XmlJavaTypeAdapter(CustomerAdapter.class)
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
}
次を参照してください。
リンクを直接コピーしたり、回答の基本を説明したり、最終的にはもっと説明が必要な場合はブログ記事にリンクしてください。このようにして、リンクが枯れてしまった場合、私たちはまだ答えを得ます。 –
これは私が感謝する必要があるものです。 –
私はリンクをコピーするだけではないことに同意します。この回答は私の通勤中に私の電話から作業するために掲示されました。私がコンピュータにいるときに、より詳細な情報を提供します。それが助けてくれれば私自身のブログへのリンクです –