java - 如何在java中从xsd生成Long类类型变量

标签 java xml xsd

我正在使用 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 类型

最佳答案

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

  1. 如果需要该属性,则 xjc 将生成基本类型,例如整型,长型
  2. 如果该属性是可选的,那么您将拥有对象类型,例如整数、长整型等

这是有意义的,因为必填字段需要有默认值。回到您的案例,如果您希望 timestamp 为 Long,则删除 minOccurs。希望对您有所帮助。

关于java - 如何在java中从xsd生成Long类类型变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47504474/

相关文章:

java - 事务如何与多个持久性单元一起工作

xml - xsd:对两个不同元素的属性的唯一约束

xml - xmlns 属性在哪里定义?

xml - XSD 指定一个只能在 XML 中使用一次的属性

java - 如何编写具有多个命名空间的正确 XML 以便进行验证?

java - JaxB 属性值已定义。使用 <jaxb :property> to resolve this conflict

java - 为 ${n} 类型和 {{coinsadded}} 类型的变量创建单一模式,以便可以在字符串中找到它

java - +Android Webview - 如何自动滚动页面?

java - 如何检查字符串是否平衡?

c# - xpath 表达式 count() 失败并出现异常,表达式必须评估为节点集