我得到了一个XSD,其中包含一个xs:integer
字段。我希望生成的代码使用int
,这样我就可以对其应用现有接口。(该字段是必填字段,并且永远不会超过32位范围,它应该是xs:int
)。
使用XJB,我可以更改生成代码中的类型。但是在创建JAXBContext
时,这给了我一个错误。
<bindings
xmlns="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc">
<bindings schemaLocation="mySchema.xsd">
<bindings node="//xsd:element[@name='myField']">
<!-- either with jaxb -->
<property name="myField">
<baseType name="int">
<javaType name="int" />
</baseType>
</property>
<!-- or with xjc-->
<xjc:javaType name="int"/>
</bindings>
</bindings>
</bindings>
这将生成以下代码
public class MyClass {
@XmlElement(required = true, type = String.class)
@XmlJavaTypeAdapter(value = Adapter1.class)
@XmlSchemaType(name = "integer")
protected int myField;
// ...
}
虽然这适用于代码生成,但它在编组时失败,并在创建上下文时引发以下异常。
Adapter myPackage.Adapter1.class is not applicable to the field type int.
this problem is related to the following location:
at @javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter(type=javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter$DEFAULT.class, value=mySchemaPackage.Adapter1.class)
如果我手动向注释添加一个type参数,问题就解决了,但是我找不到让JAXB为我做这件事的方法。
@XmlJavaTypeAdapter(value = Adapter1.class, type = int.class)
使用JAXB2基本插件,我成功地覆盖了生成的注释。我决定使用命名适配器,而不是动态生成的Adapter1。类,但
IntAdapter
的实现是相同的XmlAdapter
<bindings
xmlns="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:annox="http://annox.dev.java.net">
<bindings schemaLocation="mySchema.xsd">
<bindings node="//xsd:element[@name='myField']">
<annox:annotate target="field">
@javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter(value=myCodePackage.IntAdapter.class, type=int.class)
</annox:annotate>
<xjc:javaType name="int" adapter="myCodePackage.IntAdapter"/>
</bindings>
</bindings>
</bindings>
现在代码生成如下
@XmlElement(required = true, type = String.class)
@XmlJavaTypeAdapter(value = IntAdapter.class, type = int.class)
@XmlSchemaType(name = "integer")
protected int myField;
问题内容: 嗨,stackoverflow世界, 我想在XSD中指定JAXB可以将特定元素用作XmlRootElement。 我知道如何将注释添加到生成的类中:我想做的是指定可以在代码生成之前将元素生成为根元素。 我使用外部JAXB定制(.xjb文件)。目的是不修改架构(因为它们正在定义标准)。 有人知道怎么做吗?谢谢! 新泽西 问题答案: 问题解决了。 JAXB插件Annotate http:/
问题内容: 如果需要在列表中添加枚举属性,如何声明列表?让我们说枚举类是: 我想要做: 需要用什么代替 问题答案: 如果要使用字符串类型,请使用以下命令: 否则,MByD的答案
问题内容: 我遇到了一些以前在Java中从未遇到过的事情,也就是说,我需要在运行时创建一个新的ArrayList类实例,而无需分配已知类型,然后将数据添加到列表中。听起来有点含糊,所以这里有个例子: 现在,我之所以这样做而不是仅仅使用泛型,是因为泛型已经被大量使用,并且本例中的“ i”变量将被用作类型“?”。我真的不希望再使用其他泛型,因为这会给用户带来更多工作,并且在最终设计中灵活性会大大降低。
我正在使用带有钩子的React 16.8.3,目前我想键入 对于我的当前代码,的类型是,而我希望它的类型是。也存在同样的问题。 如何将类型符号添加到?
我一直在使用 annox 在我的 jaxb 生成的类上添加注释(通过绑定文件),但我找不到直接在包上添加注释的方法(包信息.java)。 我一直在尝试在bindings.xml中这样做: 但是jaxb抱怨说< code>annox:annotate不应该在那里。 还有别的方法吗?
我想在java中创建一个哈希表类,将键和值对存储在链表的ArrayList中 然后,我想创建一个链接列表对象,然后可以使用该对象在arrayList的每个索引内创建一个新的链接列表。为此,我声明: 然后我设置了add函数以将元素添加到LinkedList的第一个索引中,该索引位于arrayList的哈希键索引中: 每次运行此代码时,我都会收到一个错误,其中我的索引为7而我的大小为0。这会导致错误: