xmlns Moxy ile öznitelik kök nasıl geçersiz kılınır:
EclipseLink MOXy, kök öğenizin varsayılan ad alanını değiştirmek de dahil olmak üzere, JAXB sıralamasının kolayca özelleştirilmesini sağlar. Varsayılan ad geçersiz XML eşleme (OXM) için Nesne geçerli:
<?xml version="1.0"?>
<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm" version="2.5">
<xml-schema element-form-default="QUALIFIED" namespace="http://www.another.org/package"/>
</xml-bindings>
, varsayılan ad olduğundan bunun yerine <xml-schema element-form-default="UNSET"/>
kullanın.
Moxy Kurulumu:
1) projenize kütüphane ekleyin:
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.moxy</artifactId>
<version>2.6.2</version>
</dependency>
2) MOXY'nin fabrika (örnsrc/main/resources/com/sample/entity/jaxb.properties
) etkinleştirmek için nesne modeli pakete bir jaxb.properties
ekleyin:
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
3) Con your Instantiate metni OXM yapılandırmasına göre (bu örnekte OXM dosyasrc/main/resources/com/sample/entity/my-oxm.xml
vardır):
Map<String, Source> metadata = Collections.singletonMap("com.sample.entity", new StreamSource(Customer.class.getResourceAsStream("my-oxm.xml")));
Map<String, Object> properties = Collections.singletonMap(JAXBContextProperties.OXM_METADATA_SOURCE, metadata);
JAXBContext jaxbContext = JAXBContext.newInstance(new Class[] {customer.getClass()}, properties);
Ardından da normal olarak JAXBContext
üzerinde sıralanırken kullanabilirsiniz. Kullanmak istediğiniz her farklı OXM dosyası için ayrı bağlamları örnekleyin. Moxy ile
Ek özelleştirmeleri: Moxy hayır daha fazla etkili nesne modeli değiştirmenin manevra mantık var olsa bile open/closed principle uymak yapmadan gelecekte varlığın sıralanırken özelleştirmesine olanak tanır kullanma
Açık Marshaller
sınıfları. Çok alakalı olarak
<?xml version="1.0"?>
<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm" version="2.5">
<xml-schema element-form-default="QUALIFIED" namespace="http://www.example.com/person"/>
<java-types>
<java-type name="com.sample.entity.Customer">
<xml-root-element name="person"/>
<java-attributes>
<xml-attribute java-attribute="id" name="personId"/>
<xml-element java-attribute="id" xml-path="someOtherId/text()"/>
</java-attributes>
</java-type>
</java-types>
</xml-bindings>
Sen * @ XmlSchema * bölümü için ekstra bir kod parçacığını yapmalıdır: Bir
Person
olarakCustomer
nesneyi sıralamakta gerekirse Örneğin, başka bir OXM dosyası ekleyerek bu yapabileceğini ama kolayca gözden kaçabilir. – jah