Estoy usando xjc para generar clases Java a partir del esquema XML y el siguiente es un extracto del XSD.Esquema XML a clases Java con XJC
<xs:element name="NameInfo">
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element ref="UnstructuredName"/> <!-- This line -->
<xs:sequence>
<xs:element ref="StructuredName"/>
<xs:element ref="UnstructuredName" minOccurs="0"/> <!-- and this line! -->
</xs:sequence>
</xs:choice>
<xs:element ref="SomethingElse" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
En su mayor parte las clases generadas están bien, pero para el bloque anterior me gustaría tener algo como:
public List<Object> getContent() {
if (content == null) {
content = new ArrayList<Object>();
}
return this.content;
}
con el siguiente comentario sobre ella:
* You are getting this "catch-all" property because of the following reason:
* The field name "UnstructuredName" is used by two different parts of a schema. See:
* line XXXX of file:FILE.xsd
* line XXXX of file:FILE.xsd
* To get rid of this property, apply a property customization to one
* of both of the following declarations to change their names:
* Gets the value of the content property.
tengo colocó un comentario al final de las dos líneas en cuestión.
Por el momento, no creo que sea fácil cambiar el esquema, ya que esto se decidió entre proveedores y no me gustaría ir por esta ruta (si es posible) ya que ralentizará bastante el progreso.
He buscado y he encontrado this page, ¿la personalización externa es lo que quiero hacer? He estado trabajando principalmente con las clases generadas, por lo que no estoy completamente familiarizado con el proceso que genera estas clases. ¡Un ejemplo simple de la "personalización de propiedades" sería genial! El método alternativo para generar las clases de Java estaría bien, siempre y cuando el esquema aún se pueda usar.
EDITAR: Debo aclarar que los dos UnstructuredName
son de hecho el mismo elemento.
No estoy muy seguro de cómo re-organización de los elementos puede ayudar en este caso. Si puedo la "secuencia" interna en otro elemento, ¿se resolvería este problema? ¿Es eso factible con la transformación? Si realizo alguna transformación, ¿necesitaría una para transformarme en una estructura que me gusta y luego realizar otra transformación de regreso a su estructura original? – nevets1219