【问题标题】:How to generate Long class type variable from xsd in java如何在java中从xsd生成Long类类型变量
【发布时间】:2017-11-27 05:30:50
【问题描述】:

我正在生成使用 xsd 分类的模型,以下是我的 xsd 文件之一,我正在使用它生成 Generator 模型,这里我的问题是我想要其中一个变量的类型是 Long 类类型但是我得到了long premitive 数据类型。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jaxb:extensionBindingPrefixes="xjc" jaxb:version="1.0">
<xsd:complexType name="Generator">
    <xsd:sequence>
        <xsd:element name="id" type="xsd:string" minOccurs="1" />
        <xsd:element name="name" type="xsd:string" minOccurs="1" />
        <xsd:element name="age" type="xsd:int" minOccurs="1" />
        <xsd:element name="timestamp" type="xsd:long" minOccurs="1" />
   </xsd:sequence>
</xsd:complexType>

生成的类是这样的:-

public class Generator
implements Cloneable, CopyTo, Equals, ToString
{

@XmlElement(required = true)
protected String id;
@XmlElement(required = true)
protected String name;
@XmlElement(required = true)
protected int age;
@XmlElement(required = true)
protected long timestamp;
// settter and getter methods
}

生成的timestamp 值是long 类型,但我希望它是Long 类型

【问题讨论】:

    标签: java xml xsd


    【解决方案1】:

    几天前我遇到了类似的问题。玩了xsd之后,发现了以下两点:

    1. 如果需要该属性,则 xjc 将生成原始类型,例如int, long
    2. 如果属性是可选的,那么您将具有对象类型,例如整数、长整数等。

    这是有意义的,因为必填字段需要具有默认值。回到你的情况,如果你想timestamp 是长的,那么删除minOccurs。希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      我的 XSD 也遇到了同样的问题,而我需要对象而不是原始对象。

      对于您的情况,只需尝试下面给出的选项 4。它应该像对我一样有效。

      1. type="xs:long" minOccurs="0" maxOccurs="1" >(生成)- 长值(对象)

      2. type="xs:long" minOccurs="0" maxOccurs="1" nillable="true" >(生成)- JAXBElement 值(对象)

      3. type="xs:long" minOccurs="1" maxOccurs="1" >(生成)- long 值(原始)

      4. type="xs:long" minOccurs="1" maxOccurs="1" nillable="true" >(生成)- 长值(对象)

      我知道回复很晚,但它可能会帮助面临此类问题的其他人。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-15
        • 1970-01-01
        • 2021-01-20
        • 2012-07-12
        • 2010-09-20
        • 1970-01-01
        相关资源
        最近更新 更多