libreria - xml a java
JAX-B: cómo asignar un elemento de esquema a una clase existente de Java (1)
Puede usar un archivo de enlace externo para configurar XJC y hacer lo que quiera.
binding.xjb
<jxb:bindings
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
version="2.1">
<jxb:bindings schemaLocation="yourSchema.xsd">
<jxb:bindings node="//xs:complexType[@name=''existing_type'']">
<jxb:class ref="com.existing.Existing"/>
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
Llamada XJC
xjc -d outputDir -b binding.xjb yourSchema.xsd
Posible duplicado:
jaxb xjc mapeo a objetos de dominio existentes
Estoy usando JAX-B para generar clases Java desde un esquema XML.
Hay un elemento en mi esquema que me gustaría vincular a una clase Java que existe en mi proyecto. Mi enlace se hace en un archivo .xjb. He intentado varios enfoques pero no puedo hacer que nada funcione.
es posible? ¿Si es así, cómo?
Aquí hay un pequeño ejemplo de mi problema:
Mi clase de Java existente:
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; }
}
Mi esquema:
<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>
¿Alguna idea de cuál debería ser mi encuadernación? Intenté usar el ajuste jxb: class, pero no pude hacerlo funcionar. Mi resultado final tiene dos requisitos:
- La clase ExistingType no se genera a partir del esquema
- La clase RootNode tiene un elemento de tipo Existing, que se asigna a mi clase Java existente