tutorial online example bindings java xml jaxb xsd bigdecimal

java - online - jaxb xsd example



Generación Java JaxB, ¿cómo obtengo un granDecimal de mi xsd? (2)

Me di cuenta de esto. La respuesta es usar una clase binding.xjb

vinculante =

<jxb:javaType name="java.math.BigDecimal" xmlType="xs:decimal"/>

hormiga

<xjc schema="my.xsd" destdir="generated" binding="myBinding.xjb" header="false" extension="true" />

xsd =

<attribute name="height" type="decimal"></attribute>

Esto significa que cualquier cosa marcada como tipo decimal se convertirá en un gran decimal, pero en mi caso eso está bien. Espero que esto ayude a alguien más.

Tengo una anotación xsd que intento ingresar a Marshal en un objeto java. Me gustaría que Java termine con BigDecimal por su valor. ¿Qué ingreso en el xsd para que haga esto? Estoy usando una tarea xjc ant

<xjc schema="my.xsd" destdir="generated" header="false" extension="true" />

Aquí está el xsd relevante -

<complexType name="Size"> <attribute name="height" type="BigDecimal"></attribute> <!-- this is wrong--> </complexType>

Me gustaría terminar con esto para la clase generada -

public class Size { @XmlAttribute(name = "height") protected BigDecimal height; }


Una implementación JAXB (JSR-222) generará java.math.BigDecimal partir del tipo decimal (consulte la Tabla 6-1 en la especificación JAXB 2.2).

Esquema XML (schema.xsd)

<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/schema" xmlns:tns="http://www.example.org/schema" elementFormDefault="qualified"> <element name="foo"> <complexType> <sequence> <element name="bar" type="decimal"/> </sequence> </complexType> </element> </schema>

Llamada XJC

xjc schema.xsd

Modelo Java (Foo)

package org.example.schema; import java.math.BigDecimal; import javax.xml.bind.annotation.*; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = {"bar"}) @XmlRootElement(name = "foo") public class Foo { @XmlElement(required = true) protected BigDecimal bar; ... }