Как создать UUID в моем коде Java, используя JAXB, чтобы пройти ограничение шаблона XSD - PullRequest
0 голосов
/ 03 февраля 2019

Я собираюсь создать поле ID в своем коде Java, используя UUID.Мне нужно создать xml из моего Book класса и проверить его на основе ниже XSD.

Мой XSD выглядит следующим образом

<xsd:complexType name="Book" >
    <xsd:sequence>
        <xsd:element name="Publisher" type="ns:PublisherType"/>
        <xsd:element name="MessageId" type="ns:GUID"/>
        <xsd:element name="Author" type="xsd:string"/>
        <xsd:element name="Title" type="xsd:string"/>
        <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"
                 namespace="##other"/>
    </xsd:sequence>
</xsd:complexType>

<xsd:simpleType name="GUID">
    <xsd:restriction base="xsd:string">
        <xsd:pattern value="[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"/>
    </xsd:restriction>
</xsd:simpleType>

Мой класс Java выглядит следующим образом

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
@XmlType(name="Book", propOrder = {"publisher", "messageId", "author", "title"
})
@Getter
@Setter
public class Book {

    private Publisher publisher;
    private GUID messageId;    
    private String author;  
    private String title;
}

Как мне реализовать мой класс GUID для возврата UUID.randomUUID() или любой другой способ пройти XSD?

1 Ответ

0 голосов
/ 04 февраля 2019

Взгляните на этот пример , в основном вы должны аннотировать метод, который возвращает значение xml, с помощью @XmlValue

public class GUID {

    private final UUID uuid;

    public GUID() {
        this.uuid = UUID.randomUUID();
    }

    @XmlValue
    public String getValue(){
        return uuid.toString();
    }
}
...